@vybestack/llxprt-code 0.1.14 → 0.1.16

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 (238) hide show
  1. package/README.md +90 -2
  2. package/dist/package.json +4 -5
  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/extension.d.ts +1 -0
  7. package/dist/src/config/extension.js +4 -0
  8. package/dist/src/config/extension.js.map +1 -1
  9. package/dist/src/config/settings.d.ts +13 -3
  10. package/dist/src/config/settings.js +84 -23
  11. package/dist/src/config/settings.js.map +1 -1
  12. package/dist/src/gemini.d.ts +3 -0
  13. package/dist/src/gemini.js +212 -36
  14. package/dist/src/gemini.js.map +1 -1
  15. package/dist/src/generated/git-commit.d.ts +1 -1
  16. package/dist/src/generated/git-commit.js +1 -1
  17. package/dist/src/generated/git-commit.js.map +1 -1
  18. package/dist/src/integration-tests/GITHUB_ACTIONS_README.md +41 -0
  19. package/dist/src/integration-tests/test-utils.d.ts +68 -0
  20. package/dist/src/integration-tests/test-utils.js +167 -0
  21. package/dist/src/integration-tests/test-utils.js.map +1 -0
  22. package/dist/src/nonInteractiveCli.js +24 -66
  23. package/dist/src/nonInteractiveCli.js.map +1 -1
  24. package/dist/src/providers/IFileSystem.d.ts +42 -0
  25. package/dist/src/providers/IFileSystem.js +46 -0
  26. package/dist/src/providers/IFileSystem.js.map +1 -0
  27. package/dist/src/providers/providerConfigUtils.d.ts +0 -4
  28. package/dist/src/providers/providerConfigUtils.js +21 -52
  29. package/dist/src/providers/providerConfigUtils.js.map +1 -1
  30. package/dist/src/providers/providerManagerInstance.d.ts +6 -1
  31. package/dist/src/providers/providerManagerInstance.js +117 -82
  32. package/dist/src/providers/providerManagerInstance.js.map +1 -1
  33. package/dist/src/services/BuiltinCommandLoader.js +13 -0
  34. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  35. package/dist/src/services/CommandService.d.ts +8 -4
  36. package/dist/src/services/CommandService.js +24 -8
  37. package/dist/src/services/CommandService.js.map +1 -1
  38. package/dist/src/services/FileCommandLoader.d.ts +15 -3
  39. package/dist/src/services/FileCommandLoader.js +94 -42
  40. package/dist/src/services/FileCommandLoader.js.map +1 -1
  41. package/dist/src/services/McpPromptLoader.d.ts +25 -0
  42. package/dist/src/services/McpPromptLoader.js +192 -0
  43. package/dist/src/services/McpPromptLoader.js.map +1 -0
  44. package/dist/src/services/prompt-processors/shellProcessor.d.ts +32 -0
  45. package/dist/src/services/prompt-processors/shellProcessor.js +77 -0
  46. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -0
  47. package/dist/src/services/prompt-processors/types.d.ts +4 -0
  48. package/dist/src/services/prompt-processors/types.js +4 -0
  49. package/dist/src/services/prompt-processors/types.js.map +1 -1
  50. package/dist/src/ui/App.js +325 -195
  51. package/dist/src/ui/App.js.map +1 -1
  52. package/dist/src/ui/commands/aboutCommand.js +2 -5
  53. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  54. package/dist/src/ui/commands/baseurlCommand.js +54 -9
  55. package/dist/src/ui/commands/baseurlCommand.js.map +1 -1
  56. package/dist/src/ui/commands/chatCommand.js +39 -1
  57. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  58. package/dist/src/ui/commands/diagnosticsCommand.d.ts +10 -0
  59. package/dist/src/ui/commands/diagnosticsCommand.js +122 -0
  60. package/dist/src/ui/commands/diagnosticsCommand.js.map +1 -0
  61. package/dist/src/ui/commands/directoryCommand.d.ts +8 -0
  62. package/dist/src/ui/commands/directoryCommand.js +116 -0
  63. package/dist/src/ui/commands/directoryCommand.js.map +1 -0
  64. package/dist/src/ui/commands/ideCommand.js +101 -105
  65. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  66. package/dist/src/ui/commands/initCommand.d.ts +7 -0
  67. package/dist/src/ui/commands/initCommand.js +108 -0
  68. package/dist/src/ui/commands/initCommand.js.map +1 -0
  69. package/dist/src/ui/commands/keyCommand.js +75 -11
  70. package/dist/src/ui/commands/keyCommand.js.map +1 -1
  71. package/dist/src/ui/commands/keyfileCommand.js +54 -13
  72. package/dist/src/ui/commands/keyfileCommand.js.map +1 -1
  73. package/dist/src/ui/commands/mcpCommand.js +53 -8
  74. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  75. package/dist/src/ui/commands/memoryCommand.js +2 -1
  76. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  77. package/dist/src/ui/commands/modelCommand.js +2 -5
  78. package/dist/src/ui/commands/modelCommand.js.map +1 -1
  79. package/dist/src/ui/commands/profileCommand.d.ts +10 -0
  80. package/dist/src/ui/commands/profileCommand.js +592 -0
  81. package/dist/src/ui/commands/profileCommand.js.map +1 -0
  82. package/dist/src/ui/commands/providerCommand.js +46 -3
  83. package/dist/src/ui/commands/providerCommand.js.map +1 -1
  84. package/dist/src/ui/commands/setCommand.d.ts +7 -0
  85. package/dist/src/ui/commands/setCommand.js +431 -0
  86. package/dist/src/ui/commands/setCommand.js.map +1 -0
  87. package/dist/src/ui/commands/setupGithubCommand.d.ts +7 -0
  88. package/dist/src/ui/commands/setupGithubCommand.js +49 -0
  89. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -0
  90. package/dist/src/ui/commands/types.d.ts +23 -4
  91. package/dist/src/ui/commands/types.js +1 -0
  92. package/dist/src/ui/commands/types.js.map +1 -1
  93. package/dist/src/ui/commands/vimCommand.js +0 -7
  94. package/dist/src/ui/commands/vimCommand.js.map +1 -1
  95. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +3 -3
  96. package/dist/src/ui/components/ContextSummaryDisplay.js +8 -8
  97. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  98. package/dist/src/ui/components/DebugProfiler.d.ts +6 -0
  99. package/dist/src/ui/components/DebugProfiler.js +26 -0
  100. package/dist/src/ui/components/DebugProfiler.js.map +1 -0
  101. package/dist/src/ui/components/Footer.d.ts +2 -0
  102. package/dist/src/ui/components/Footer.js +5 -4
  103. package/dist/src/ui/components/Footer.js.map +1 -1
  104. package/dist/src/ui/components/Header.js +1 -1
  105. package/dist/src/ui/components/Header.js.map +1 -1
  106. package/dist/src/ui/components/Help.js +2 -2
  107. package/dist/src/ui/components/Help.js.map +1 -1
  108. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +5 -4
  109. package/dist/src/ui/components/IDEContextDetailDisplay.js +6 -8
  110. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -1
  111. package/dist/src/ui/components/InputPrompt.d.ts +2 -0
  112. package/dist/src/ui/components/InputPrompt.js +128 -13
  113. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  114. package/dist/src/ui/components/LoadProfileDialog.d.ts +13 -0
  115. package/dist/src/ui/components/LoadProfileDialog.js +57 -0
  116. package/dist/src/ui/components/LoadProfileDialog.js.map +1 -0
  117. package/dist/src/ui/components/PrepareLabel.d.ts +15 -0
  118. package/dist/src/ui/components/PrepareLabel.js +16 -0
  119. package/dist/src/ui/components/PrepareLabel.js.map +1 -0
  120. package/dist/src/ui/components/ProviderModelDialog.js +75 -28
  121. package/dist/src/ui/components/ProviderModelDialog.js.map +1 -1
  122. package/dist/src/ui/components/SecureKeyInput.d.ts +15 -0
  123. package/dist/src/ui/components/SecureKeyInput.js +58 -0
  124. package/dist/src/ui/components/SecureKeyInput.js.map +1 -0
  125. package/dist/src/ui/components/ShellConfirmationDialog.d.ts +15 -0
  126. package/dist/src/ui/components/ShellConfirmationDialog.js +45 -0
  127. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -0
  128. package/dist/src/ui/components/SuggestionsDisplay.d.ts +1 -0
  129. package/dist/src/ui/components/SuggestionsDisplay.js +3 -3
  130. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  131. package/dist/src/ui/components/Tips.js +1 -1
  132. package/dist/src/ui/components/Tips.js.map +1 -1
  133. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +15 -4
  134. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  135. package/dist/src/ui/components/messages/UserMessage.js +4 -1
  136. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  137. package/dist/src/ui/components/shared/text-buffer.d.ts +270 -2
  138. package/dist/src/ui/components/shared/text-buffer.js +410 -70
  139. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  140. package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +72 -0
  141. package/dist/src/ui/components/shared/vim-buffer-actions.js +565 -0
  142. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -0
  143. package/dist/src/ui/containers/SessionController.js +14 -15
  144. package/dist/src/ui/containers/SessionController.js.map +1 -1
  145. package/dist/src/ui/contexts/VimModeContext.js +2 -2
  146. package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
  147. package/dist/src/ui/editors/editorSettingsManager.js +2 -0
  148. package/dist/src/ui/editors/editorSettingsManager.js.map +1 -1
  149. package/dist/src/ui/hooks/atCommandProcessor.js +56 -48
  150. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  151. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
  152. package/dist/src/ui/hooks/shellCommandProcessor.js +139 -200
  153. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  154. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +7 -3
  155. package/dist/src/ui/hooks/slashCommandProcessor.js +219 -130
  156. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  157. package/dist/src/ui/hooks/useAuthCommand.js +9 -0
  158. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  159. package/dist/src/ui/hooks/useCompletion.d.ts +5 -5
  160. package/dist/src/ui/hooks/useCompletion.js +7 -402
  161. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  162. package/dist/src/ui/hooks/useConsoleMessages.js +53 -37
  163. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  164. package/dist/src/ui/hooks/useGeminiStream.js +58 -12
  165. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  166. package/dist/src/ui/hooks/useKeypress.js +5 -2
  167. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  168. package/dist/src/ui/hooks/useLoadProfileDialog.d.ts +27 -0
  169. package/dist/src/ui/hooks/useLoadProfileDialog.js +138 -0
  170. package/dist/src/ui/hooks/useLoadProfileDialog.js.map +1 -0
  171. package/dist/src/ui/hooks/useReactToolScheduler.js +0 -1
  172. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  173. package/dist/src/ui/hooks/useReverseSearchCompletion.d.ts +19 -0
  174. package/dist/src/ui/hooks/useReverseSearchCompletion.js +54 -0
  175. package/dist/src/ui/hooks/useReverseSearchCompletion.js.map +1 -0
  176. package/dist/src/ui/hooks/useShellHistory.d.ts +1 -0
  177. package/dist/src/ui/hooks/useShellHistory.js +30 -7
  178. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  179. package/dist/src/ui/hooks/useSlashCompletion.d.ts +24 -0
  180. package/dist/src/ui/hooks/useSlashCompletion.js +451 -0
  181. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -0
  182. package/dist/src/ui/hooks/vim.d.ts +28 -0
  183. package/dist/src/ui/hooks/vim.js +630 -0
  184. package/dist/src/ui/hooks/vim.js.map +1 -0
  185. package/dist/src/ui/reducers/appReducer.d.ts +3 -2
  186. package/dist/src/ui/reducers/appReducer.js +1 -0
  187. package/dist/src/ui/reducers/appReducer.js.map +1 -1
  188. package/dist/src/ui/themes/theme-manager.js +10 -1
  189. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  190. package/dist/src/ui/themes/theme.d.ts +1 -0
  191. package/dist/src/ui/themes/theme.js +19 -4
  192. package/dist/src/ui/themes/theme.js.map +1 -1
  193. package/dist/src/ui/utils/renderLoopDetector.js +3 -3
  194. package/dist/src/ui/utils/renderLoopDetector.js.map +1 -1
  195. package/dist/src/ui/utils/secureInputHandler.d.ts +46 -0
  196. package/dist/src/ui/utils/secureInputHandler.js +128 -0
  197. package/dist/src/ui/utils/secureInputHandler.js.map +1 -0
  198. package/dist/src/ui/utils/textUtils.d.ts +0 -8
  199. package/dist/src/ui/utils/textUtils.js +0 -22
  200. package/dist/src/ui/utils/textUtils.js.map +1 -1
  201. package/dist/src/ui/utils/updateCheck.d.ts +7 -1
  202. package/dist/src/ui/utils/updateCheck.js +59 -25
  203. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  204. package/dist/src/utils/events.d.ts +11 -0
  205. package/dist/src/utils/events.js +13 -0
  206. package/dist/src/utils/events.js.map +1 -0
  207. package/dist/src/utils/gitUtils.d.ts +10 -0
  208. package/dist/src/utils/gitUtils.js +24 -0
  209. package/dist/src/utils/gitUtils.js.map +1 -0
  210. package/dist/src/utils/handleAutoUpdate.d.ts +11 -0
  211. package/dist/src/utils/handleAutoUpdate.js +101 -0
  212. package/dist/src/utils/handleAutoUpdate.js.map +1 -0
  213. package/dist/src/utils/installationInfo.d.ts +23 -0
  214. package/dist/src/utils/installationInfo.js +154 -0
  215. package/dist/src/utils/installationInfo.js.map +1 -0
  216. package/dist/src/utils/sandbox-macos-permissive-closed.sb +6 -0
  217. package/dist/src/utils/sandbox-macos-permissive-open.sb +6 -0
  218. package/dist/src/utils/sandbox-macos-permissive-proxied.sb +6 -0
  219. package/dist/src/utils/sandbox-macos-restrictive-closed.sb +6 -0
  220. package/dist/src/utils/sandbox-macos-restrictive-open.sb +6 -0
  221. package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +6 -0
  222. package/dist/src/utils/sandbox.d.ts +2 -2
  223. package/dist/src/utils/sandbox.js +35 -11
  224. package/dist/src/utils/sandbox.js.map +1 -1
  225. package/dist/src/utils/spawnWrapper.d.ts +7 -0
  226. package/dist/src/utils/spawnWrapper.js +8 -0
  227. package/dist/src/utils/spawnWrapper.js.map +1 -0
  228. package/dist/src/utils/updateEventEmitter.d.ts +11 -0
  229. package/dist/src/utils/updateEventEmitter.js +12 -0
  230. package/dist/src/utils/updateEventEmitter.js.map +1 -0
  231. package/dist/src/validateNonInterActiveAuth.d.ts +2 -1
  232. package/dist/src/validateNonInterActiveAuth.js +31 -5
  233. package/dist/src/validateNonInterActiveAuth.js.map +1 -1
  234. package/dist/tsconfig.tsbuildinfo +1 -1
  235. package/package.json +4 -5
  236. package/dist/src/providers/enhanceConfigWithProviders.d.ts +0 -12
  237. package/dist/src/providers/enhanceConfigWithProviders.js +0 -16
  238. package/dist/src/providers/enhanceConfigWithProviders.js.map +0 -1
@@ -8,7 +8,10 @@ import { CustomTheme } from '../ui/themes/theme.js';
8
8
  export declare const SETTINGS_DIRECTORY_NAME = ".llxprt";
9
9
  export declare const USER_SETTINGS_DIR: string;
10
10
  export declare const USER_SETTINGS_PATH: string;
11
+ export declare const DEFAULT_EXCLUDED_ENV_VARS: string[];
11
12
  export declare function getSystemSettingsPath(): string;
13
+ export declare function getWorkspaceSettingsPath(workspaceDir: string): string;
14
+ export type DnsResolutionOrder = 'ipv4first' | 'verbatim';
12
15
  export declare enum SettingScope {
13
16
  User = "User",
14
17
  Workspace = "Workspace",
@@ -27,6 +30,8 @@ export interface Settings {
27
30
  theme?: string;
28
31
  customThemes?: Record<string, CustomTheme>;
29
32
  selectedAuthType?: AuthType;
33
+ defaultProfile?: string;
34
+ useExternalAuth?: boolean;
30
35
  sandbox?: boolean | string;
31
36
  coreTools?: string[];
32
37
  excludeTools?: string[];
@@ -62,10 +67,15 @@ export interface Settings {
62
67
  openaiResponsesEnabled?: boolean;
63
68
  maxSessionTurns?: number;
64
69
  summarizeToolOutput?: Record<string, SummarizeToolOutputSettings>;
70
+ vimMode?: boolean;
71
+ memoryImportFormat?: 'tree' | 'flat';
72
+ ideModeFeature?: boolean;
65
73
  ideMode?: boolean;
66
- defaultModel?: string;
74
+ disableAutoUpdate?: boolean;
75
+ disableUpdateNag?: boolean;
67
76
  memoryDiscoveryMaxDirs?: number;
68
- vimMode?: boolean;
77
+ excludedProjectEnvVars?: string[];
78
+ dnsResolutionOrder?: DnsResolutionOrder;
69
79
  }
70
80
  export interface SettingsError {
71
81
  message: string;
@@ -91,7 +101,7 @@ export declare class LoadedSettings {
91
101
  removeProviderKeyfile(providerName: string): void;
92
102
  }
93
103
  export declare function setUpCloudShellEnvironment(envFilePath: string | null): void;
94
- export declare function loadEnvironment(): void;
104
+ export declare function loadEnvironment(settings?: Settings): void;
95
105
  /**
96
106
  * Loads settings from user and workspace directories.
97
107
  * Project settings override user settings.
@@ -14,6 +14,7 @@ import { DefaultDark } from '../ui/themes/default.js';
14
14
  export const SETTINGS_DIRECTORY_NAME = '.llxprt';
15
15
  export const USER_SETTINGS_DIR = path.join(homedir(), SETTINGS_DIRECTORY_NAME);
16
16
  export const USER_SETTINGS_PATH = path.join(USER_SETTINGS_DIR, 'settings.json');
17
+ export const DEFAULT_EXCLUDED_ENV_VARS = ['DEBUG', 'DEBUG_MODE'];
17
18
  export function getSystemSettingsPath() {
18
19
  if (process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH) {
19
20
  return process.env.GEMINI_CLI_SYSTEM_SETTINGS_PATH;
@@ -28,6 +29,9 @@ export function getSystemSettingsPath() {
28
29
  return '/etc/gemini-cli/settings.json';
29
30
  }
30
31
  }
32
+ export function getWorkspaceSettingsPath(workspaceDir) {
33
+ return path.join(workspaceDir, SETTINGS_DIRECTORY_NAME, 'settings.json');
34
+ }
31
35
  export var SettingScope;
32
36
  (function (SettingScope) {
33
37
  SettingScope["User"] = "User";
@@ -189,13 +193,51 @@ export function setUpCloudShellEnvironment(envFilePath) {
189
193
  process.env.GOOGLE_CLOUD_PROJECT = 'cloudshell-gca';
190
194
  }
191
195
  }
192
- export function loadEnvironment() {
196
+ export function loadEnvironment(settings) {
193
197
  const envFilePath = findEnvFile(process.cwd());
198
+ // Cloud Shell environment variable handling
194
199
  if (process.env.CLOUD_SHELL === 'true') {
195
200
  setUpCloudShellEnvironment(envFilePath);
196
201
  }
202
+ // If no settings provided, try to load workspace settings for exclusions
203
+ let resolvedSettings = settings;
204
+ if (!resolvedSettings) {
205
+ const workspaceSettingsPath = getWorkspaceSettingsPath(process.cwd());
206
+ try {
207
+ if (fs.existsSync(workspaceSettingsPath)) {
208
+ const workspaceContent = fs.readFileSync(workspaceSettingsPath, 'utf-8');
209
+ const parsedWorkspaceSettings = JSON.parse(stripJsonComments(workspaceContent));
210
+ resolvedSettings = resolveEnvVarsInObject(parsedWorkspaceSettings);
211
+ }
212
+ }
213
+ catch (_e) {
214
+ // Ignore errors loading workspace settings
215
+ }
216
+ }
197
217
  if (envFilePath) {
198
- dotenv.config({ path: envFilePath, quiet: true });
218
+ // Manually parse and load environment variables to handle exclusions correctly.
219
+ // This avoids modifying environment variables that were already set from the shell.
220
+ try {
221
+ const envFileContent = fs.readFileSync(envFilePath, 'utf-8');
222
+ const parsedEnv = dotenv.parse(envFileContent);
223
+ const excludedVars = resolvedSettings?.excludedProjectEnvVars || DEFAULT_EXCLUDED_ENV_VARS;
224
+ const isProjectEnvFile = !envFilePath.includes(LLXPRT_DIR);
225
+ for (const key in parsedEnv) {
226
+ if (Object.hasOwn(parsedEnv, key)) {
227
+ // If it's a project .env file, skip loading excluded variables.
228
+ if (isProjectEnvFile && excludedVars.includes(key)) {
229
+ continue;
230
+ }
231
+ // Load variable only if it's not already set in the environment.
232
+ if (!Object.hasOwn(process.env, key)) {
233
+ process.env[key] = parsedEnv[key];
234
+ }
235
+ }
236
+ }
237
+ }
238
+ catch (_e) {
239
+ // Errors are ignored to match the behavior of `dotenv.config({ quiet: true })`.
240
+ }
199
241
  }
200
242
  }
201
243
  /**
@@ -203,12 +245,25 @@ export function loadEnvironment() {
203
245
  * Project settings override user settings.
204
246
  */
205
247
  export function loadSettings(workspaceDir) {
206
- loadEnvironment();
207
248
  let systemSettings = {};
208
249
  let userSettings = {};
209
250
  let workspaceSettings = {};
210
251
  const settingsErrors = [];
211
252
  const systemSettingsPath = getSystemSettingsPath();
253
+ // FIX: Resolve paths to their canonical representation to handle symlinks
254
+ const resolvedWorkspaceDir = path.resolve(workspaceDir);
255
+ const resolvedHomeDir = path.resolve(homedir());
256
+ let realWorkspaceDir = resolvedWorkspaceDir;
257
+ try {
258
+ // fs.realpathSync gets the "true" path, resolving any symlinks
259
+ realWorkspaceDir = fs.realpathSync(resolvedWorkspaceDir);
260
+ }
261
+ catch (_e) {
262
+ // This is okay. The path might not exist yet, and that's a valid state.
263
+ }
264
+ // We expect homedir to always exist and be resolvable.
265
+ const realHomeDir = fs.realpathSync(resolvedHomeDir);
266
+ const workspaceSettingsPath = getWorkspaceSettingsPath(workspaceDir);
212
267
  // Load system settings
213
268
  try {
214
269
  if (fs.existsSync(systemSettingsPath)) {
@@ -244,29 +299,32 @@ export function loadSettings(workspaceDir) {
244
299
  path: USER_SETTINGS_PATH,
245
300
  });
246
301
  }
247
- const workspaceSettingsPath = path.join(workspaceDir, SETTINGS_DIRECTORY_NAME, 'settings.json');
248
- // Load workspace settings
249
- try {
250
- if (fs.existsSync(workspaceSettingsPath)) {
251
- const projectContent = fs.readFileSync(workspaceSettingsPath, 'utf-8');
252
- const parsedWorkspaceSettings = JSON.parse(stripJsonComments(projectContent));
253
- workspaceSettings = resolveEnvVarsInObject(parsedWorkspaceSettings);
254
- if (workspaceSettings.theme && workspaceSettings.theme === 'VS') {
255
- workspaceSettings.theme = DefaultLight.name;
256
- }
257
- else if (workspaceSettings.theme &&
258
- workspaceSettings.theme === 'VS2015') {
259
- workspaceSettings.theme = DefaultDark.name;
302
+ // This comparison is now much more reliable.
303
+ if (realWorkspaceDir !== realHomeDir) {
304
+ // Load workspace settings
305
+ try {
306
+ if (fs.existsSync(workspaceSettingsPath)) {
307
+ const projectContent = fs.readFileSync(workspaceSettingsPath, 'utf-8');
308
+ const parsedWorkspaceSettings = JSON.parse(stripJsonComments(projectContent));
309
+ workspaceSettings = resolveEnvVarsInObject(parsedWorkspaceSettings);
310
+ if (workspaceSettings.theme && workspaceSettings.theme === 'VS') {
311
+ workspaceSettings.theme = DefaultLight.name;
312
+ }
313
+ else if (workspaceSettings.theme &&
314
+ workspaceSettings.theme === 'VS2015') {
315
+ workspaceSettings.theme = DefaultDark.name;
316
+ }
260
317
  }
261
318
  }
319
+ catch (error) {
320
+ settingsErrors.push({
321
+ message: getErrorMessage(error),
322
+ path: workspaceSettingsPath,
323
+ });
324
+ }
262
325
  }
263
- catch (error) {
264
- settingsErrors.push({
265
- message: getErrorMessage(error),
266
- path: workspaceSettingsPath,
267
- });
268
- }
269
- return new LoadedSettings({
326
+ // Create LoadedSettings first
327
+ const loadedSettings = new LoadedSettings({
270
328
  path: systemSettingsPath,
271
329
  settings: systemSettings,
272
330
  }, {
@@ -276,6 +334,9 @@ export function loadSettings(workspaceDir) {
276
334
  path: workspaceSettingsPath,
277
335
  settings: workspaceSettings,
278
336
  }, settingsErrors);
337
+ // Load environment with merged settings
338
+ loadEnvironment(loadedSettings.merged);
339
+ return loadedSettings;
279
340
  }
280
341
  export function saveSettings(settingsFile) {
281
342
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/config/settings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../../../src/config/settings.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,7 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { DnsResolutionOrder } from './config/settings.js';
7
+ export declare function validateDnsResolutionOrder(order: string | undefined): DnsResolutionOrder;
8
+ export declare function setupUnhandledRejectionHandler(): void;
6
9
  export declare function main(): Promise<void>;
@@ -12,7 +12,9 @@ import { loadCliConfig, parseArguments } from './config/config.js';
12
12
  import { readStdin } from './utils/readStdin.js';
13
13
  import { basename } from 'node:path';
14
14
  import v8 from 'node:v8';
15
+ import * as fs from 'node:fs/promises';
15
16
  import os from 'node:os';
17
+ import dns from 'node:dns';
16
18
  import { spawn } from 'node:child_process';
17
19
  import { start_sandbox } from './utils/sandbox.js';
18
20
  import chalk from 'chalk';
@@ -30,8 +32,23 @@ AuthType, getOauthClient, } from '@vybestack/llxprt-code-core';
30
32
  import { validateAuthMethod } from './config/auth.js';
31
33
  import { setMaxSizedBoxDebugging } from './ui/components/shared/MaxSizedBox.js';
32
34
  import { getProviderManager } from './providers/providerManagerInstance.js';
33
- import { setProviderApiKey, setProviderApiKeyFromFile, setProviderBaseUrl, } from './providers/providerConfigUtils.js';
35
+ import { setProviderApiKey, setProviderBaseUrl, } from './providers/providerConfigUtils.js';
34
36
  import { validateNonInteractiveAuth } from './validateNonInterActiveAuth.js';
37
+ import { checkForUpdates } from './ui/utils/updateCheck.js';
38
+ import { handleAutoUpdate } from './utils/handleAutoUpdate.js';
39
+ import { appEvents, AppEvent } from './utils/events.js';
40
+ export function validateDnsResolutionOrder(order) {
41
+ const defaultValue = 'ipv4first';
42
+ if (order === undefined) {
43
+ return defaultValue;
44
+ }
45
+ if (order === 'ipv4first' || order === 'verbatim') {
46
+ return order;
47
+ }
48
+ // We don't want to throw here, just warn and use the default.
49
+ console.warn(`Invalid value for dnsResolutionOrder in settings: "${order}". Using default "${defaultValue}".`);
50
+ return defaultValue;
51
+ }
35
52
  function getNodeMemoryArgs(config) {
36
53
  const totalMemoryMB = os.totalmem() / (1024 * 1024);
37
54
  const heapStats = v8.getHeapStatistics();
@@ -54,7 +71,7 @@ function getNodeMemoryArgs(config) {
54
71
  }
55
72
  async function relaunchWithAdditionalArgs(additionalArgs) {
56
73
  const nodeArgs = [...additionalArgs, ...process.argv.slice(1)];
57
- const newEnv = { ...process.env, GEMINI_CLI_NO_RELAUNCH: 'true' };
74
+ const newEnv = { ...process.env, LLXPRT_CLI_NO_RELAUNCH: 'true' };
58
75
  const child = spawn(process.execPath, nodeArgs, {
59
76
  stdio: 'inherit',
60
77
  env: newEnv,
@@ -66,7 +83,28 @@ import { runAcpPeer } from './acp/acpPeer.js';
66
83
  import { existsSync, mkdirSync } from 'fs';
67
84
  import { homedir } from 'os';
68
85
  import { join } from 'path';
86
+ export function setupUnhandledRejectionHandler() {
87
+ let unhandledRejectionOccurred = false;
88
+ process.on('unhandledRejection', (reason, _promise) => {
89
+ const errorMessage = `=========================================
90
+ This is an unexpected error. Please file a bug report using the /bug tool.
91
+ CRITICAL: Unhandled Promise Rejection!
92
+ =========================================
93
+ Reason: ${reason}${reason instanceof Error && reason.stack
94
+ ? `
95
+ Stack trace:
96
+ ${reason.stack}`
97
+ : ''}`;
98
+ appEvents.emit(AppEvent.LogError, errorMessage);
99
+ if (!unhandledRejectionOccurred) {
100
+ unhandledRejectionOccurred = true;
101
+ appEvents.emit(AppEvent.OpenDebugConsole);
102
+ }
103
+ });
104
+ }
69
105
  export async function main() {
106
+ setupUnhandledRejectionHandler();
107
+ // Create .llxprt directory if it doesn't exist
70
108
  const llxprtDir = join(homedir(), '.llxprt');
71
109
  if (!existsSync(llxprtDir)) {
72
110
  mkdirSync(llxprtDir, { recursive: true });
@@ -94,6 +132,8 @@ export async function main() {
94
132
  serverToolsProvider.setConfig) {
95
133
  serverToolsProvider.setConfig(config);
96
134
  }
135
+ // Set DNS resolution order (prefer IPv4 by default)
136
+ dns.setDefaultResultOrder(validateDnsResolutionOrder(settings.merged.dnsResolutionOrder));
97
137
  if (argv.promptInteractive && !process.stdin.isTTY) {
98
138
  console.error('Error: The --prompt-interactive flag is not supported when piping input from stdin.');
99
139
  process.exit(1);
@@ -117,7 +157,7 @@ export async function main() {
117
157
  await config.initialize();
118
158
  // Load custom themes from settings
119
159
  themeManager.loadCustomThemes(settings.merged.customThemes);
120
- // If a provider is specified via CLI, activate it after initialization
160
+ // If a provider is specified, activate it after initialization
121
161
  const configProvider = config.getProvider();
122
162
  if (configProvider) {
123
163
  try {
@@ -128,6 +168,47 @@ export async function main() {
128
168
  if (configModel && activeProvider.setModel) {
129
169
  activeProvider.setModel(configModel);
130
170
  }
171
+ // Apply profile model params if loaded AND provider was NOT specified via CLI
172
+ const configWithProfile = config;
173
+ if (!argv.provider &&
174
+ configWithProfile._profileModelParams &&
175
+ activeProvider) {
176
+ if ('setModelParams' in activeProvider &&
177
+ activeProvider.setModelParams) {
178
+ activeProvider.setModelParams(configWithProfile._profileModelParams);
179
+ }
180
+ }
181
+ // Apply ephemeral settings from profile ONLY if provider was NOT specified via CLI
182
+ if (!argv.provider) {
183
+ const authKey = config.getEphemeralSetting('auth-key');
184
+ const authKeyfile = config.getEphemeralSetting('auth-keyfile');
185
+ const baseUrl = config.getEphemeralSetting('base-url');
186
+ // Only apply profile auth settings if no CLI auth args were provided
187
+ if (!argv.key && !argv.keyfile) {
188
+ if (authKey && activeProvider.setApiKey) {
189
+ activeProvider.setApiKey(authKey);
190
+ }
191
+ else if (authKeyfile && activeProvider.setApiKey) {
192
+ // Load API key from file
193
+ try {
194
+ const apiKey = (await fs.readFile(authKeyfile.replace(/^~/, os.homedir()), 'utf-8')).trim();
195
+ if (apiKey) {
196
+ activeProvider.setApiKey(apiKey);
197
+ }
198
+ }
199
+ catch (error) {
200
+ console.error(chalk.red(`Failed to load keyfile ${authKeyfile}: ${error instanceof Error ? error.message : String(error)}`));
201
+ }
202
+ }
203
+ }
204
+ // Only apply profile base URL if not overridden by CLI
205
+ if (!argv.baseurl &&
206
+ baseUrl &&
207
+ baseUrl !== 'none' &&
208
+ activeProvider.setBaseUrl) {
209
+ activeProvider.setBaseUrl(baseUrl);
210
+ }
211
+ }
131
212
  // No need to set auth type when using a provider
132
213
  }
133
214
  catch (e) {
@@ -135,6 +216,50 @@ export async function main() {
135
216
  process.exit(1);
136
217
  }
137
218
  }
219
+ // Apply ephemeral settings from profile if provider came from profile (not CLI)
220
+ // This handles the case where profile was loaded via --profile-load
221
+ if (!argv.provider && (argv.profileLoad || settings.merged.defaultProfile)) {
222
+ const activeProvider = providerManager.getActiveProvider();
223
+ if (activeProvider) {
224
+ // Apply ephemeral settings from profile to the provider
225
+ // BUT only if not overridden by CLI arguments
226
+ const authKey = config.getEphemeralSetting('auth-key');
227
+ const authKeyfile = config.getEphemeralSetting('auth-keyfile');
228
+ const baseUrl = config.getEphemeralSetting('base-url');
229
+ // Only apply profile auth settings if no CLI auth args were provided
230
+ if (!argv.key && !argv.keyfile) {
231
+ if (authKey && activeProvider.setApiKey) {
232
+ activeProvider.setApiKey(authKey);
233
+ }
234
+ else if (authKeyfile && activeProvider.setApiKey) {
235
+ // Load API key from file
236
+ try {
237
+ const apiKey = (await fs.readFile(authKeyfile.replace(/^~/, os.homedir()), 'utf-8')).trim();
238
+ if (apiKey) {
239
+ activeProvider.setApiKey(apiKey);
240
+ }
241
+ }
242
+ catch (error) {
243
+ console.error(chalk.red(`Failed to load keyfile ${authKeyfile}: ${error instanceof Error ? error.message : String(error)}`));
244
+ }
245
+ }
246
+ }
247
+ // Only apply profile base URL if not overridden by CLI
248
+ if (!argv.baseurl &&
249
+ baseUrl &&
250
+ baseUrl !== 'none' &&
251
+ activeProvider.setBaseUrl) {
252
+ activeProvider.setBaseUrl(baseUrl);
253
+ }
254
+ // Apply profile model params if loaded
255
+ const configWithProfile = config;
256
+ if (configWithProfile._profileModelParams &&
257
+ 'setModelParams' in activeProvider &&
258
+ activeProvider.setModelParams) {
259
+ activeProvider.setModelParams(configWithProfile._profileModelParams);
260
+ }
261
+ }
262
+ }
138
263
  // Process CLI-provided credentials (--key, --keyfile, --baseurl)
139
264
  if (argv.key || argv.keyfile || argv.baseurl) {
140
265
  // Provider-specific credentials are now handled directly
@@ -151,13 +276,28 @@ export async function main() {
151
276
  }
152
277
  // Handle --keyfile
153
278
  if (argv.keyfile) {
154
- const result = await setProviderApiKeyFromFile(providerManager, settings, argv.keyfile, config);
155
- if (!result.success) {
156
- console.error(chalk.red(result.message));
157
- process.exit(1);
279
+ try {
280
+ // Read the API key from file
281
+ const resolvedPath = argv.keyfile.replace(/^~/, os.homedir());
282
+ const apiKey = await fs.readFile(resolvedPath, 'utf-8');
283
+ const trimmedKey = apiKey.trim();
284
+ if (!trimmedKey) {
285
+ console.error(chalk.red('The specified file is empty'));
286
+ process.exit(1);
287
+ }
288
+ const result = await setProviderApiKey(providerManager, settings, trimmedKey, config);
289
+ if (!result.success) {
290
+ console.error(chalk.red(result.message));
291
+ process.exit(1);
292
+ }
293
+ const message = `API key loaded from ${resolvedPath} for provider '${providerManager.getActiveProviderName()}'`;
294
+ if (config.getDebugMode()) {
295
+ console.debug(message);
296
+ }
158
297
  }
159
- if (config.getDebugMode()) {
160
- console.debug(result.message);
298
+ catch (error) {
299
+ console.error(chalk.red(`Failed to process keyfile: ${error instanceof Error ? error.message : String(error)}`));
300
+ process.exit(1);
161
301
  }
162
302
  }
163
303
  // Handle --baseurl
@@ -186,7 +326,8 @@ export async function main() {
186
326
  : [];
187
327
  const sandboxConfig = config.getSandbox();
188
328
  if (sandboxConfig) {
189
- if (settings.merged.selectedAuthType) {
329
+ if (settings.merged.selectedAuthType &&
330
+ !settings.merged.useExternalAuth) {
190
331
  // Validate authentication here because the sandbox will interfere with the Oauth2 web redirect.
191
332
  try {
192
333
  const err = validateAuthMethod(settings.merged.selectedAuthType);
@@ -194,13 +335,23 @@ export async function main() {
194
335
  throw new Error(err);
195
336
  }
196
337
  await config.refreshAuth(settings.merged.selectedAuthType);
338
+ // Apply compression settings after authentication
339
+ const merged = settings.merged;
340
+ const contextLimit = merged['context-limit'];
341
+ const compressionThreshold = merged['compression-threshold'];
342
+ if (contextLimit || compressionThreshold) {
343
+ const geminiClient = config.getGeminiClient();
344
+ if (geminiClient) {
345
+ geminiClient.setCompressionSettings(compressionThreshold, contextLimit);
346
+ }
347
+ }
197
348
  }
198
349
  catch (err) {
199
350
  console.error('Error authenticating:', err);
200
351
  process.exit(1);
201
352
  }
202
353
  }
203
- await start_sandbox(sandboxConfig, memoryArgs);
354
+ await start_sandbox(sandboxConfig, memoryArgs, config);
204
355
  process.exit(0);
205
356
  }
206
357
  else {
@@ -265,6 +416,16 @@ export async function main() {
265
416
  , {
266
417
  // eslint-disable-next-line react/jsx-no-bind
267
418
  onError: handleError, children: _jsx(AppWrapper, { config: config, settings: settings, startupWarnings: startupWarnings, version: version }) }) }), { exitOnCtrlC: false });
419
+ checkForUpdates()
420
+ .then((info) => {
421
+ handleAutoUpdate(info, settings, config.getProjectRoot());
422
+ })
423
+ .catch((err) => {
424
+ // Silently ignore update check errors.
425
+ if (config.getDebugMode()) {
426
+ console.error('Update check failed:', err);
427
+ }
428
+ });
268
429
  registerCleanup(() => instance.unmount());
269
430
  return;
270
431
  }
@@ -303,20 +464,6 @@ function setWindowTitle(title, settings) {
303
464
  });
304
465
  }
305
466
  }
306
- // --- Global Unhandled Rejection Handler ---
307
- process.on('unhandledRejection', (reason, _promise) => {
308
- // Log other unexpected unhandled rejections as critical errors
309
- console.error('=========================================');
310
- console.error('CRITICAL: Unhandled Promise Rejection!');
311
- console.error('=========================================');
312
- console.error('Reason:', reason);
313
- console.error('Stack trace may follow:');
314
- if (!(reason instanceof Error)) {
315
- console.error(reason);
316
- }
317
- // Exit for genuinely unhandled errors
318
- process.exit(1);
319
- });
320
467
  async function loadNonInteractiveConfig(config, extensions, settings, argv) {
321
468
  let finalConfig = config;
322
469
  if (!argv.yolo) {
@@ -341,13 +488,27 @@ async function loadNonInteractiveConfig(config, extensions, settings, argv) {
341
488
  const providerManager = getProviderManager(finalConfig);
342
489
  finalConfig.setProviderManager(providerManager);
343
490
  // Activate provider if specified
344
- if (argv.provider) {
345
- await providerManager.setActiveProvider(argv.provider);
491
+ if (argv.provider || finalConfig.getProvider()) {
492
+ const providerToActivate = argv.provider || finalConfig.getProvider();
493
+ if (providerToActivate) {
494
+ await providerManager.setActiveProvider(providerToActivate);
495
+ }
346
496
  // Set model if specified and provider supports it
347
- if (argv.model) {
497
+ const modelToSet = argv.model || finalConfig.getModel();
498
+ if (modelToSet) {
348
499
  const activeProvider = providerManager.getActiveProvider();
349
500
  if (activeProvider && typeof activeProvider.setModel === 'function') {
350
- activeProvider.setModel(argv.model);
501
+ activeProvider.setModel(modelToSet);
502
+ }
503
+ }
504
+ // Apply profile model params if loaded AND provider was NOT specified via CLI
505
+ const configWithProfile = finalConfig;
506
+ if (!argv.provider && configWithProfile._profileModelParams) {
507
+ const activeProvider = providerManager.getActiveProvider();
508
+ if (activeProvider &&
509
+ 'setModelParams' in activeProvider &&
510
+ activeProvider.setModelParams) {
511
+ activeProvider.setModelParams(configWithProfile._profileModelParams);
351
512
  }
352
513
  }
353
514
  }
@@ -367,13 +528,28 @@ async function loadNonInteractiveConfig(config, extensions, settings, argv) {
367
528
  }
368
529
  // Handle --keyfile
369
530
  if (argv.keyfile) {
370
- const result = await setProviderApiKeyFromFile(providerManager, settings, argv.keyfile, finalConfig);
371
- if (!result.success) {
372
- console.error(chalk.red(result.message));
373
- process.exit(1);
531
+ try {
532
+ // Read the API key from file
533
+ const resolvedPath = argv.keyfile.replace(/^~/, os.homedir());
534
+ const apiKey = await fs.readFile(resolvedPath, 'utf-8');
535
+ const trimmedKey = apiKey.trim();
536
+ if (!trimmedKey) {
537
+ console.error(chalk.red('The specified file is empty'));
538
+ process.exit(1);
539
+ }
540
+ const result = await setProviderApiKey(providerManager, settings, trimmedKey, finalConfig);
541
+ if (!result.success) {
542
+ console.error(chalk.red(result.message));
543
+ process.exit(1);
544
+ }
545
+ const message = `API key loaded from ${resolvedPath} for provider '${providerManager.getActiveProviderName()}'`;
546
+ if (finalConfig.getDebugMode()) {
547
+ console.debug(message);
548
+ }
374
549
  }
375
- if (finalConfig.getDebugMode()) {
376
- console.debug(result.message);
550
+ catch (error) {
551
+ console.error(chalk.red(`Failed to process keyfile: ${error instanceof Error ? error.message : String(error)}`));
552
+ process.exit(1);
377
553
  }
378
554
  }
379
555
  // Handle --baseurl
@@ -388,6 +564,6 @@ async function loadNonInteractiveConfig(config, extensions, settings, argv) {
388
564
  }
389
565
  }
390
566
  }
391
- return await validateNonInteractiveAuth(settings.merged.selectedAuthType, finalConfig);
567
+ return await validateNonInteractiveAuth(settings.merged.selectedAuthType, settings.merged.useExternalAuth, finalConfig, settings);
392
568
  }
393
569
  //# sourceMappingURL=gemini.js.map