@vybestack/llxprt-code 0.1.14 → 0.1.15

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 (116) hide show
  1. package/README.md +53 -0
  2. package/dist/package.json +4 -5
  3. package/dist/src/config/extension.d.ts +1 -0
  4. package/dist/src/config/extension.js +4 -0
  5. package/dist/src/config/extension.js.map +1 -1
  6. package/dist/src/config/settings.d.ts +2 -1
  7. package/dist/src/config/settings.js.map +1 -1
  8. package/dist/src/gemini.d.ts +1 -0
  9. package/dist/src/gemini.js +35 -15
  10. package/dist/src/gemini.js.map +1 -1
  11. package/dist/src/generated/git-commit.d.ts +1 -1
  12. package/dist/src/generated/git-commit.js +1 -1
  13. package/dist/src/services/BuiltinCommandLoader.js +2 -0
  14. package/dist/src/services/BuiltinCommandLoader.js.map +1 -1
  15. package/dist/src/services/CommandService.d.ts +8 -4
  16. package/dist/src/services/CommandService.js +24 -8
  17. package/dist/src/services/CommandService.js.map +1 -1
  18. package/dist/src/services/FileCommandLoader.d.ts +15 -3
  19. package/dist/src/services/FileCommandLoader.js +94 -42
  20. package/dist/src/services/FileCommandLoader.js.map +1 -1
  21. package/dist/src/services/McpPromptLoader.d.ts +25 -0
  22. package/dist/src/services/McpPromptLoader.js +192 -0
  23. package/dist/src/services/McpPromptLoader.js.map +1 -0
  24. package/dist/src/services/prompt-processors/shellProcessor.d.ts +32 -0
  25. package/dist/src/services/prompt-processors/shellProcessor.js +77 -0
  26. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -0
  27. package/dist/src/services/prompt-processors/types.d.ts +4 -0
  28. package/dist/src/services/prompt-processors/types.js +4 -0
  29. package/dist/src/services/prompt-processors/types.js.map +1 -1
  30. package/dist/src/ui/App.js +312 -195
  31. package/dist/src/ui/App.js.map +1 -1
  32. package/dist/src/ui/commands/chatCommand.js +39 -1
  33. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  34. package/dist/src/ui/commands/initCommand.d.ts +7 -0
  35. package/dist/src/ui/commands/initCommand.js +76 -0
  36. package/dist/src/ui/commands/initCommand.js.map +1 -0
  37. package/dist/src/ui/commands/mcpCommand.js +53 -8
  38. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  39. package/dist/src/ui/commands/types.d.ts +22 -3
  40. package/dist/src/ui/commands/types.js +1 -0
  41. package/dist/src/ui/commands/types.js.map +1 -1
  42. package/dist/src/ui/commands/vimCommand.js +0 -7
  43. package/dist/src/ui/commands/vimCommand.js.map +1 -1
  44. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +3 -3
  45. package/dist/src/ui/components/ContextSummaryDisplay.js +8 -8
  46. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  47. package/dist/src/ui/components/Footer.d.ts +1 -0
  48. package/dist/src/ui/components/Footer.js +2 -2
  49. package/dist/src/ui/components/Footer.js.map +1 -1
  50. package/dist/src/ui/components/Header.js +1 -1
  51. package/dist/src/ui/components/Header.js.map +1 -1
  52. package/dist/src/ui/components/Help.js +2 -2
  53. package/dist/src/ui/components/Help.js.map +1 -1
  54. package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +4 -4
  55. package/dist/src/ui/components/IDEContextDetailDisplay.js +5 -7
  56. package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -1
  57. package/dist/src/ui/components/InputPrompt.d.ts +2 -0
  58. package/dist/src/ui/components/InputPrompt.js +5 -1
  59. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  60. package/dist/src/ui/components/ShellConfirmationDialog.d.ts +15 -0
  61. package/dist/src/ui/components/ShellConfirmationDialog.js +45 -0
  62. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -0
  63. package/dist/src/ui/components/Tips.js +1 -1
  64. package/dist/src/ui/components/Tips.js.map +1 -1
  65. package/dist/src/ui/components/shared/text-buffer.d.ts +270 -2
  66. package/dist/src/ui/components/shared/text-buffer.js +415 -70
  67. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  68. package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +72 -0
  69. package/dist/src/ui/components/shared/vim-buffer-actions.js +565 -0
  70. package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -0
  71. package/dist/src/ui/contexts/VimModeContext.js +2 -2
  72. package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
  73. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
  74. package/dist/src/ui/hooks/shellCommandProcessor.js +139 -200
  75. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  76. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +7 -3
  77. package/dist/src/ui/hooks/slashCommandProcessor.js +208 -129
  78. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  79. package/dist/src/ui/hooks/useCompletion.js +7 -2
  80. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  81. package/dist/src/ui/hooks/useConsoleMessages.js +53 -37
  82. package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
  83. package/dist/src/ui/hooks/useGeminiStream.js +14 -2
  84. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  85. package/dist/src/ui/hooks/useKeypress.js +5 -2
  86. package/dist/src/ui/hooks/useKeypress.js.map +1 -1
  87. package/dist/src/ui/hooks/useReactToolScheduler.js +0 -1
  88. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  89. package/dist/src/ui/hooks/vim.d.ts +28 -0
  90. package/dist/src/ui/hooks/vim.js +630 -0
  91. package/dist/src/ui/hooks/vim.js.map +1 -0
  92. package/dist/src/ui/themes/theme-manager.js +10 -1
  93. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  94. package/dist/src/ui/themes/theme.d.ts +1 -0
  95. package/dist/src/ui/themes/theme.js +19 -4
  96. package/dist/src/ui/themes/theme.js.map +1 -1
  97. package/dist/src/ui/utils/textUtils.d.ts +0 -8
  98. package/dist/src/ui/utils/textUtils.js +0 -22
  99. package/dist/src/ui/utils/textUtils.js.map +1 -1
  100. package/dist/src/ui/utils/updateCheck.d.ts +7 -1
  101. package/dist/src/ui/utils/updateCheck.js +17 -28
  102. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  103. package/dist/src/utils/events.d.ts +11 -0
  104. package/dist/src/utils/events.js +13 -0
  105. package/dist/src/utils/events.js.map +1 -0
  106. package/dist/src/utils/handleAutoUpdate.d.ts +10 -0
  107. package/dist/src/utils/handleAutoUpdate.js +97 -0
  108. package/dist/src/utils/handleAutoUpdate.js.map +1 -0
  109. package/dist/src/utils/installationInfo.d.ts +23 -0
  110. package/dist/src/utils/installationInfo.js +154 -0
  111. package/dist/src/utils/installationInfo.js.map +1 -0
  112. package/dist/src/utils/updateEventEmitter.d.ts +11 -0
  113. package/dist/src/utils/updateEventEmitter.js +12 -0
  114. package/dist/src/utils/updateEventEmitter.js.map +1 -0
  115. package/dist/tsconfig.tsbuildinfo +1 -1
  116. package/package.json +4 -5
@@ -56,8 +56,17 @@ class ThemeManager {
56
56
  for (const [name, customThemeConfig] of Object.entries(customThemesSettings)) {
57
57
  const validation = validateCustomTheme(customThemeConfig);
58
58
  if (validation.isValid) {
59
+ if (validation.warning) {
60
+ console.warn(`Theme "${name}": ${validation.warning}`);
61
+ }
62
+ const themeWithDefaults = {
63
+ ...DEFAULT_THEME.colors,
64
+ ...customThemeConfig,
65
+ name: customThemeConfig.name || name,
66
+ type: 'custom',
67
+ };
59
68
  try {
60
- const theme = createCustomTheme(customThemeConfig);
69
+ const theme = createCustomTheme(themeWithDefaults);
61
70
  this.customThemes.set(name, theme);
62
71
  }
63
72
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"theme-manager.js","sourceRoot":"","sources":["../../../../src/ui/themes/theme-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme-manager.js","sourceRoot":"","sources":["../../../../src/ui/themes/theme-manager.ts"],"names":[],"mappings":"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"}
@@ -98,5 +98,6 @@ export declare function createCustomTheme(customTheme: CustomTheme): Theme;
98
98
  export declare function validateCustomTheme(customTheme: Partial<CustomTheme>): {
99
99
  isValid: boolean;
100
100
  error?: string;
101
+ warning?: string;
101
102
  };
102
103
  export {};
@@ -292,11 +292,15 @@ export function validateCustomTheme(customTheme) {
292
292
  'AccentGreen',
293
293
  'AccentYellow',
294
294
  'AccentRed',
295
- 'DiffAdded',
296
- 'DiffRemoved',
295
+ // 'DiffAdded' and 'DiffRemoved' are not required as they were added after
296
+ // the theme format was defined.
297
297
  'Comment',
298
298
  'Gray',
299
299
  ];
300
+ const recommendedFields = [
301
+ 'DiffAdded',
302
+ 'DiffRemoved',
303
+ ];
300
304
  for (const field of requiredFields) {
301
305
  if (!customTheme[field]) {
302
306
  return {
@@ -305,6 +309,12 @@ export function validateCustomTheme(customTheme) {
305
309
  };
306
310
  }
307
311
  }
312
+ const missingFields = [];
313
+ for (const field of recommendedFields) {
314
+ if (!customTheme[field]) {
315
+ missingFields.push(field);
316
+ }
317
+ }
308
318
  // Validate color format (basic hex validation)
309
319
  const colorFields = [
310
320
  'Background',
@@ -323,7 +333,7 @@ export function validateCustomTheme(customTheme) {
323
333
  ];
324
334
  for (const field of colorFields) {
325
335
  const color = customTheme[field];
326
- if (!isValidColor(color)) {
336
+ if (color !== undefined && !isValidColor(color)) {
327
337
  return {
328
338
  isValid: false,
329
339
  error: `Invalid color format for ${field}: ${color}`,
@@ -337,7 +347,12 @@ export function validateCustomTheme(customTheme) {
337
347
  error: `Invalid theme name: ${customTheme.name}`,
338
348
  };
339
349
  }
340
- return { isValid: true };
350
+ return {
351
+ isValid: true,
352
+ warning: missingFields.length > 0
353
+ ? `Missing field(s) ${missingFields.join(', ')}`
354
+ : undefined,
355
+ };
341
356
  }
342
357
  /**
343
358
  * Checks if a theme name is valid.
@@ -1 +1 @@
1
- {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../../src/ui/themes/theme.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../../../src/ui/themes/theme.ts"],"names":[],"mappings":"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"}
@@ -9,14 +9,6 @@
9
9
  * @returns The length of the longest line in the ASCII art.
10
10
  */
11
11
  export declare const getAsciiArtWidth: (asciiArt: string) => number;
12
- /**
13
- * Checks if a Buffer is likely binary by testing for the presence of a NULL byte.
14
- * The presence of a NULL byte is a strong indicator that the data is not plain text.
15
- * @param data The Buffer to check.
16
- * @param sampleSize The number of bytes from the start of the buffer to test.
17
- * @returns True if a NULL byte is found, false otherwise.
18
- */
19
- export declare function isBinary(data: Buffer | null | undefined, sampleSize?: number): boolean;
20
12
  export declare function toCodePoints(str: string): string[];
21
13
  export declare function cpLen(str: string): number;
22
14
  export declare function cpSlice(str: string, start: number, end?: number): string;
@@ -15,28 +15,6 @@ export const getAsciiArtWidth = (asciiArt) => {
15
15
  const lines = asciiArt.split('\n');
16
16
  return Math.max(...lines.map((line) => line.length));
17
17
  };
18
- /**
19
- * Checks if a Buffer is likely binary by testing for the presence of a NULL byte.
20
- * The presence of a NULL byte is a strong indicator that the data is not plain text.
21
- * @param data The Buffer to check.
22
- * @param sampleSize The number of bytes from the start of the buffer to test.
23
- * @returns True if a NULL byte is found, false otherwise.
24
- */
25
- export function isBinary(data, sampleSize = 512) {
26
- if (!data) {
27
- return false;
28
- }
29
- const sample = data.length > sampleSize ? data.subarray(0, sampleSize) : data;
30
- for (const byte of sample) {
31
- // The presence of a NULL byte (0x00) is one of the most reliable
32
- // indicators of a binary file. Text files should not contain them.
33
- if (byte === 0) {
34
- return true;
35
- }
36
- }
37
- // If no NULL bytes were found in the sample, we assume it's text.
38
- return false;
39
- }
40
18
  /*
41
19
  * -------------------------------------------------------------------------
42
20
  * Unicode‑aware helpers (work at the code‑point level rather than UTF‑16
@@ -1 +1 @@
1
- {"version":3,"file":"textUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/textUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CACtB,IAA+B,EAC/B,UAAU,GAAG,GAAG;IAEhB,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9E,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,iEAAiE;QACjE,mEAAmE;QACnE,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,kEAAkE;IAClE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;4EAI4E;AAE5E,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,qEAAqE;IACrE,6BAA6B;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,GAAY;IAC9D,2CAA2C;IAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC"}
1
+ {"version":3,"file":"textUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/textUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF;;;;4EAI4E;AAE5E,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,qEAAqE;IACrE,6BAA6B;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,GAAY;IAC9D,2CAA2C;IAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC"}
@@ -3,4 +3,10 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
- export declare function checkForUpdates(): Promise<string | null>;
6
+ import { UpdateInfo } from 'update-notifier';
7
+ export declare const FETCH_TIMEOUT_MS = 2000;
8
+ export interface UpdateObject {
9
+ message: string;
10
+ update: UpdateInfo;
11
+ }
12
+ export declare function checkForUpdates(): Promise<UpdateObject | null>;
@@ -3,27 +3,10 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import updateNotifier from 'update-notifier';
6
7
  import semver from 'semver';
7
8
  import { getPackageJson } from '../../utils/package.js';
8
- const UPDATE_CHECK_URL = 'https://registry.npmjs.org/@vybestack/llxprt-code/latest';
9
- const UPDATE_CHECK_TIMEOUT_MS = 5000;
10
- async function fetchWithTimeout(url, timeout) {
11
- const controller = new AbortController();
12
- const timeoutId = setTimeout(() => controller.abort(), timeout);
13
- try {
14
- const response = await fetch(url, { signal: controller.signal });
15
- return response;
16
- }
17
- catch (error) {
18
- if (error instanceof Error && error.name === 'AbortError') {
19
- throw new Error(`Request timed out after ${timeout}ms`);
20
- }
21
- throw error;
22
- }
23
- finally {
24
- clearTimeout(timeoutId);
25
- }
26
- }
9
+ export const FETCH_TIMEOUT_MS = 2000;
27
10
  export async function checkForUpdates() {
28
11
  try {
29
12
  // Skip update check when running from source (development mode)
@@ -34,15 +17,21 @@ export async function checkForUpdates() {
34
17
  if (!packageJson || !packageJson.name || !packageJson.version) {
35
18
  return null;
36
19
  }
37
- const response = await fetchWithTimeout(UPDATE_CHECK_URL, UPDATE_CHECK_TIMEOUT_MS);
38
- if (!response.ok) {
39
- return null;
40
- }
41
- const latestPackageData = await response.json();
42
- if (latestPackageData &&
43
- latestPackageData.version &&
44
- semver.gt(latestPackageData.version, packageJson.version)) {
45
- return `LLxprt Code update available! ${packageJson.version} ${latestPackageData.version}\nRun npm install -g ${packageJson.name} to update`;
20
+ const notifier = updateNotifier({
21
+ pkg: {
22
+ name: packageJson.name,
23
+ version: packageJson.version,
24
+ },
25
+ updateCheckInterval: 0, // Check immediately
26
+ });
27
+ // avoid blocking by waiting at most FETCH_TIMEOUT_MS for fetchInfo to resolve
28
+ const timeout = new Promise((resolve) => setTimeout(resolve, FETCH_TIMEOUT_MS, null));
29
+ const updateInfo = await Promise.race([notifier.fetchInfo(), timeout]);
30
+ if (updateInfo && semver.gt(updateInfo.latest, updateInfo.current)) {
31
+ return {
32
+ message: `LLxprt Code update available! ${updateInfo.current} → ${updateInfo.latest}`,
33
+ update: updateInfo,
34
+ };
46
35
  }
47
36
  return null;
48
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../../../src/ui/utils/updateCheck.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,gBAAgB,GACpB,0DAA0D,CAAC;AAC7D,MAAM,uBAAuB,GAAG,IAAI,CAAC;AAErC,KAAK,UAAU,gBAAgB,CAC7B,GAAW,EACX,OAAe;IAEf,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAEhE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QACjE,OAAO,QAAQ,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAC1D,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,gEAAgE;QAChE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CACrC,gBAAgB,EAChB,uBAAuB,CACxB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QAEhD,IACE,iBAAiB;YACjB,iBAAiB,CAAC,OAAO;YACzB,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,EACzD,CAAC;YACD,OAAO,iCAAiC,WAAW,CAAC,OAAO,MAAM,iBAAiB,CAAC,OAAO,wBAAwB,WAAW,CAAC,IAAI,YAAY,CAAC;QACjJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../../../src/ui/utils/updateCheck.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,cAA8B,MAAM,iBAAiB,CAAC;AAC7D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAOrC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,gEAAgE;QAChE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,cAAc,CAAC;YAC9B,GAAG,EAAE;gBACH,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B;YACD,mBAAmB,EAAE,CAAC,EAAE,oBAAoB;SAC7C,CAAC,CAAC;QACH,8EAA8E;QAC9E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAC5C,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAC5C,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAEvE,IAAI,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,OAAO;gBACL,OAAO,EAAE,iCAAiC,UAAU,CAAC,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE;gBACrF,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { EventEmitter } from 'events';
7
+ export declare enum AppEvent {
8
+ OpenDebugConsole = "open-debug-console",
9
+ LogError = "log-error"
10
+ }
11
+ export declare const appEvents: EventEmitter<[never]>;
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { EventEmitter } from 'events';
7
+ export var AppEvent;
8
+ (function (AppEvent) {
9
+ AppEvent["OpenDebugConsole"] = "open-debug-console";
10
+ AppEvent["LogError"] = "log-error";
11
+ })(AppEvent || (AppEvent = {}));
12
+ export const appEvents = new EventEmitter();
13
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,mDAAuC,CAAA;IACvC,kCAAsB,CAAA;AACxB,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { UpdateObject } from '../ui/utils/updateCheck.js';
7
+ import { LoadedSettings } from '../config/settings.js';
8
+ import { HistoryItem } from '../ui/types.js';
9
+ export declare function handleAutoUpdate(info: UpdateObject | null, settings: LoadedSettings, projectRoot: string): import("child_process").ChildProcessWithoutNullStreams | undefined;
10
+ export declare function setUpdateHandler(addItem: (item: Omit<HistoryItem, 'id'>, timestamp: number) => void, setUpdateInfo: (info: UpdateObject | null) => void): () => void;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { spawn } from 'node:child_process';
7
+ import { getInstallationInfo } from './installationInfo.js';
8
+ import { updateEventEmitter } from './updateEventEmitter.js';
9
+ import { MessageType } from '../ui/types.js';
10
+ export function handleAutoUpdate(info, settings, projectRoot) {
11
+ if (!info) {
12
+ return;
13
+ }
14
+ const installationInfo = getInstallationInfo(projectRoot, settings.merged.disableAutoUpdate ?? false);
15
+ let combinedMessage = info.message;
16
+ if (installationInfo.updateMessage) {
17
+ combinedMessage += `\n${installationInfo.updateMessage}`;
18
+ }
19
+ updateEventEmitter.emit('update-received', {
20
+ message: combinedMessage,
21
+ });
22
+ if (!installationInfo.updateCommand || settings.merged.disableAutoUpdate) {
23
+ return;
24
+ }
25
+ const updateCommand = installationInfo.updateCommand.replace('@latest', `@${info.update.latest}`);
26
+ const updateProcess = spawn(updateCommand, { stdio: 'pipe', shell: true });
27
+ let errorOutput = '';
28
+ updateProcess.stderr.on('data', (data) => {
29
+ errorOutput += data.toString();
30
+ });
31
+ updateProcess.on('close', (code) => {
32
+ if (code === 0) {
33
+ updateEventEmitter.emit('update-success', {
34
+ message: 'Update successful! The new version will be used on your next run.',
35
+ });
36
+ }
37
+ else {
38
+ updateEventEmitter.emit('update-failed', {
39
+ message: `Automatic update failed. Please try updating manually. (command: ${updateCommand}, stderr: ${errorOutput.trim()})`,
40
+ });
41
+ }
42
+ });
43
+ updateProcess.on('error', (err) => {
44
+ updateEventEmitter.emit('update-failed', {
45
+ message: `Automatic update failed. Please try updating manually. (error: ${err.message})`,
46
+ });
47
+ });
48
+ return updateProcess;
49
+ }
50
+ export function setUpdateHandler(addItem, setUpdateInfo) {
51
+ let successfullyInstalled = false;
52
+ const handleUpdateRecieved = (info) => {
53
+ setUpdateInfo(info);
54
+ const savedMessage = info.message;
55
+ setTimeout(() => {
56
+ if (!successfullyInstalled) {
57
+ addItem({
58
+ type: MessageType.INFO,
59
+ text: savedMessage,
60
+ }, Date.now());
61
+ }
62
+ setUpdateInfo(null);
63
+ }, 60000);
64
+ };
65
+ const handleUpdateFailed = () => {
66
+ setUpdateInfo(null);
67
+ addItem({
68
+ type: MessageType.ERROR,
69
+ text: `Automatic update failed. Please try updating manually`,
70
+ }, Date.now());
71
+ };
72
+ const handleUpdateSuccess = () => {
73
+ successfullyInstalled = true;
74
+ setUpdateInfo(null);
75
+ addItem({
76
+ type: MessageType.INFO,
77
+ text: `Update successful! The new version will be used on your next run.`,
78
+ }, Date.now());
79
+ };
80
+ const handleUpdateInfo = (data) => {
81
+ addItem({
82
+ type: MessageType.INFO,
83
+ text: data.message,
84
+ }, Date.now());
85
+ };
86
+ updateEventEmitter.on('update-received', handleUpdateRecieved);
87
+ updateEventEmitter.on('update-failed', handleUpdateFailed);
88
+ updateEventEmitter.on('update-success', handleUpdateSuccess);
89
+ updateEventEmitter.on('update-info', handleUpdateInfo);
90
+ return () => {
91
+ updateEventEmitter.off('update-received', handleUpdateRecieved);
92
+ updateEventEmitter.off('update-failed', handleUpdateFailed);
93
+ updateEventEmitter.off('update-success', handleUpdateSuccess);
94
+ updateEventEmitter.off('update-info', handleUpdateInfo);
95
+ };
96
+ }
97
+ //# sourceMappingURL=handleAutoUpdate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handleAutoUpdate.js","sourceRoot":"","sources":["../../../src/utils/handleAutoUpdate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export declare enum PackageManager {
7
+ NPM = "npm",
8
+ YARN = "yarn",
9
+ PNPM = "pnpm",
10
+ PNPX = "pnpx",
11
+ BUN = "bun",
12
+ BUNX = "bunx",
13
+ HOMEBREW = "homebrew",
14
+ NPX = "npx",
15
+ UNKNOWN = "unknown"
16
+ }
17
+ export interface InstallationInfo {
18
+ packageManager: PackageManager;
19
+ isGlobal: boolean;
20
+ updateCommand?: string;
21
+ updateMessage?: string;
22
+ }
23
+ export declare function getInstallationInfo(projectRoot: string, isAutoUpdateDisabled: boolean): InstallationInfo;
@@ -0,0 +1,154 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { isGitRepository } from '@vybestack/llxprt-code-core';
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import * as childProcess from 'child_process';
10
+ export var PackageManager;
11
+ (function (PackageManager) {
12
+ PackageManager["NPM"] = "npm";
13
+ PackageManager["YARN"] = "yarn";
14
+ PackageManager["PNPM"] = "pnpm";
15
+ PackageManager["PNPX"] = "pnpx";
16
+ PackageManager["BUN"] = "bun";
17
+ PackageManager["BUNX"] = "bunx";
18
+ PackageManager["HOMEBREW"] = "homebrew";
19
+ PackageManager["NPX"] = "npx";
20
+ PackageManager["UNKNOWN"] = "unknown";
21
+ })(PackageManager || (PackageManager = {}));
22
+ export function getInstallationInfo(projectRoot, isAutoUpdateDisabled) {
23
+ const cliPath = process.argv[1];
24
+ if (!cliPath) {
25
+ return { packageManager: PackageManager.UNKNOWN, isGlobal: false };
26
+ }
27
+ try {
28
+ // Normalize path separators to forward slashes for consistent matching.
29
+ const realPath = fs.realpathSync(cliPath).replace(/\\/g, '/');
30
+ const normalizedProjectRoot = projectRoot?.replace(/\\/g, '/');
31
+ const isGit = isGitRepository(process.cwd());
32
+ // Check for local git clone first
33
+ if (isGit &&
34
+ normalizedProjectRoot &&
35
+ realPath.startsWith(normalizedProjectRoot) &&
36
+ !realPath.includes('/node_modules/')) {
37
+ return {
38
+ packageManager: PackageManager.UNKNOWN, // Not managed by a package manager in this sense
39
+ isGlobal: false,
40
+ updateMessage: 'Running from a local git clone. Please update with "git pull".',
41
+ };
42
+ }
43
+ // Check for npx/pnpx
44
+ if (realPath.includes('/.npm/_npx') || realPath.includes('/npm/_npx')) {
45
+ return {
46
+ packageManager: PackageManager.NPX,
47
+ isGlobal: false,
48
+ updateMessage: 'Running via npx, update not applicable.',
49
+ };
50
+ }
51
+ if (realPath.includes('/.pnpm/_pnpx')) {
52
+ return {
53
+ packageManager: PackageManager.PNPX,
54
+ isGlobal: false,
55
+ updateMessage: 'Running via pnpx, update not applicable.',
56
+ };
57
+ }
58
+ // Check for Homebrew
59
+ if (process.platform === 'darwin') {
60
+ try {
61
+ // The package name in homebrew is llxprt-code
62
+ childProcess.execSync('brew list -1 | grep -q "^llxprt-code$"', {
63
+ stdio: 'ignore',
64
+ });
65
+ return {
66
+ packageManager: PackageManager.HOMEBREW,
67
+ isGlobal: true,
68
+ updateMessage: 'Installed via Homebrew. Please update with "brew upgrade".',
69
+ };
70
+ }
71
+ catch (_error) {
72
+ // Brew is not installed or gemini-cli is not installed via brew.
73
+ // Continue to the next check.
74
+ }
75
+ }
76
+ // Check for pnpm
77
+ if (realPath.includes('/.pnpm/global')) {
78
+ const updateCommand = 'pnpm add -g @vybestack/llxprt-code@latest';
79
+ return {
80
+ packageManager: PackageManager.PNPM,
81
+ isGlobal: true,
82
+ updateCommand,
83
+ updateMessage: isAutoUpdateDisabled
84
+ ? `Please run ${updateCommand} to update`
85
+ : 'Installed with pnpm. Attempting to automatically update now...',
86
+ };
87
+ }
88
+ // Check for yarn
89
+ if (realPath.includes('/.yarn/global')) {
90
+ const updateCommand = 'yarn global add @vybestack/llxprt-code@latest';
91
+ return {
92
+ packageManager: PackageManager.YARN,
93
+ isGlobal: true,
94
+ updateCommand,
95
+ updateMessage: isAutoUpdateDisabled
96
+ ? `Please run ${updateCommand} to update`
97
+ : 'Installed with yarn. Attempting to automatically update now...',
98
+ };
99
+ }
100
+ // Check for bun
101
+ if (realPath.includes('/.bun/install/cache')) {
102
+ return {
103
+ packageManager: PackageManager.BUNX,
104
+ isGlobal: false,
105
+ updateMessage: 'Running via bunx, update not applicable.',
106
+ };
107
+ }
108
+ if (realPath.includes('/.bun/bin')) {
109
+ const updateCommand = 'bun add -g @vybestack/llxprt-code@latest';
110
+ return {
111
+ packageManager: PackageManager.BUN,
112
+ isGlobal: true,
113
+ updateCommand,
114
+ updateMessage: isAutoUpdateDisabled
115
+ ? `Please run ${updateCommand} to update`
116
+ : 'Installed with bun. Attempting to automatically update now...',
117
+ };
118
+ }
119
+ // Check for local install
120
+ if (normalizedProjectRoot &&
121
+ realPath.startsWith(`${normalizedProjectRoot}/node_modules`)) {
122
+ let pm = PackageManager.NPM;
123
+ if (fs.existsSync(path.join(projectRoot, 'yarn.lock'))) {
124
+ pm = PackageManager.YARN;
125
+ }
126
+ else if (fs.existsSync(path.join(projectRoot, 'pnpm-lock.yaml'))) {
127
+ pm = PackageManager.PNPM;
128
+ }
129
+ else if (fs.existsSync(path.join(projectRoot, 'bun.lockb'))) {
130
+ pm = PackageManager.BUN;
131
+ }
132
+ return {
133
+ packageManager: pm,
134
+ isGlobal: false,
135
+ updateMessage: "Locally installed. Please update via your project's package.json.",
136
+ };
137
+ }
138
+ // Assume global npm
139
+ const updateCommand = 'npm install -g @vybestack/llxprt-code@latest';
140
+ return {
141
+ packageManager: PackageManager.NPM,
142
+ isGlobal: true,
143
+ updateCommand,
144
+ updateMessage: isAutoUpdateDisabled
145
+ ? `Please run ${updateCommand} to update`
146
+ : 'Installed with npm. Attempting to automatically update now...',
147
+ };
148
+ }
149
+ catch (error) {
150
+ console.log(error);
151
+ return { packageManager: PackageManager.UNKNOWN, isGlobal: false };
152
+ }
153
+ }
154
+ //# sourceMappingURL=installationInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installationInfo.js","sourceRoot":"","sources":["../../../src/utils/installationInfo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { EventEmitter } from 'events';
7
+ /**
8
+ * A shared event emitter for application-wide communication
9
+ * between decoupled parts of the CLI.
10
+ */
11
+ export declare const updateEventEmitter: EventEmitter<[never]>;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { EventEmitter } from 'events';
7
+ /**
8
+ * A shared event emitter for application-wide communication
9
+ * between decoupled parts of the CLI.
10
+ */
11
+ export const updateEventEmitter = new EventEmitter();
12
+ //# sourceMappingURL=updateEventEmitter.js.map