@google/gemini-cli 0.3.0-nightly.20250821.653267a6 → 0.3.0-nightly.20250823.1a89d185

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 (143) hide show
  1. package/dist/package.json +2 -2
  2. package/dist/src/config/auth.js +9 -0
  3. package/dist/src/config/auth.js.map +1 -1
  4. package/dist/src/config/config.d.ts +1 -0
  5. package/dist/src/config/config.js +13 -1
  6. package/dist/src/config/config.js.map +1 -1
  7. package/dist/src/config/settings.d.ts +3 -1
  8. package/dist/src/config/settings.js +18 -11
  9. package/dist/src/config/settings.js.map +1 -1
  10. package/dist/src/config/settingsSchema.d.ts +46 -1
  11. package/dist/src/config/settingsSchema.js +46 -1
  12. package/dist/src/config/settingsSchema.js.map +1 -1
  13. package/dist/src/config/settingsSchema.test.js +11 -0
  14. package/dist/src/config/settingsSchema.test.js.map +1 -1
  15. package/dist/src/gemini.js +25 -2
  16. package/dist/src/gemini.js.map +1 -1
  17. package/dist/src/gemini.test.js +1 -1
  18. package/dist/src/gemini.test.js.map +1 -1
  19. package/dist/src/generated/git-commit.d.ts +2 -2
  20. package/dist/src/generated/git-commit.js +2 -2
  21. package/dist/src/nonInteractiveCli.js +22 -31
  22. package/dist/src/nonInteractiveCli.js.map +1 -1
  23. package/dist/src/services/McpPromptLoader.d.ts +11 -1
  24. package/dist/src/services/McpPromptLoader.js +42 -16
  25. package/dist/src/services/McpPromptLoader.js.map +1 -1
  26. package/dist/src/services/McpPromptLoader.test.d.ts +6 -0
  27. package/dist/src/services/McpPromptLoader.test.js +114 -0
  28. package/dist/src/services/McpPromptLoader.test.js.map +1 -0
  29. package/dist/src/ui/App.js +13 -6
  30. package/dist/src/ui/App.js.map +1 -1
  31. package/dist/src/ui/commands/aboutCommand.js +8 -1
  32. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  33. package/dist/src/ui/commands/copyCommand.js +1 -1
  34. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  35. package/dist/src/ui/components/AboutBox.d.ts +2 -0
  36. package/dist/src/ui/components/AboutBox.js +2 -1
  37. package/dist/src/ui/components/AboutBox.js.map +1 -1
  38. package/dist/src/ui/components/AuthDialog.js +5 -1
  39. package/dist/src/ui/components/AuthDialog.js.map +1 -1
  40. package/dist/src/ui/components/AuthDialog.test.js +10 -10
  41. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  42. package/dist/src/ui/components/DetailedMessagesDisplay.js +1 -1
  43. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  44. package/dist/src/ui/components/FolderTrustDialog.d.ts +1 -0
  45. package/dist/src/ui/components/FolderTrustDialog.js +9 -3
  46. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  47. package/dist/src/ui/components/FolderTrustDialog.test.js +40 -3
  48. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  49. package/dist/src/ui/components/HistoryItemDisplay.js +1 -1
  50. package/dist/src/ui/components/HistoryItemDisplay.js.map +1 -1
  51. package/dist/src/ui/components/InputPrompt.js +140 -13
  52. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  53. package/dist/src/ui/components/SettingsDialog.js +65 -34
  54. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  55. package/dist/src/ui/components/SettingsDialog.test.js +107 -47
  56. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  57. package/dist/src/ui/components/StatsDisplay.js +3 -3
  58. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  59. package/dist/src/ui/components/SuggestionsDisplay.js +11 -4
  60. package/dist/src/ui/components/SuggestionsDisplay.js.map +1 -1
  61. package/dist/src/ui/components/messages/CompressionMessage.js +2 -1
  62. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  63. package/dist/src/ui/components/messages/DiffRenderer.js +2 -1
  64. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  65. package/dist/src/ui/components/messages/DiffRenderer.test.js +11 -10
  66. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  67. package/dist/src/ui/components/messages/GeminiMessage.js +2 -1
  68. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  69. package/dist/src/ui/components/messages/UserMessage.js +2 -1
  70. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  71. package/dist/src/ui/components/shared/text-buffer.js +1 -45
  72. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  73. package/dist/src/ui/constants.d.ts +2 -0
  74. package/dist/src/ui/constants.js +2 -0
  75. package/dist/src/ui/constants.js.map +1 -1
  76. package/dist/src/ui/contexts/KeypressContext.d.ts +2 -1
  77. package/dist/src/ui/contexts/KeypressContext.js +22 -3
  78. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  79. package/dist/src/ui/contexts/KeypressContext.test.js +112 -1
  80. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  81. package/dist/src/ui/hooks/atCommandProcessor.js +0 -1
  82. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  83. package/dist/src/ui/hooks/atCommandProcessor.test.js +1 -0
  84. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  85. package/dist/src/ui/hooks/useAtCompletion.js +1 -0
  86. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  87. package/dist/src/ui/hooks/useCommandCompletion.d.ts +4 -1
  88. package/dist/src/ui/hooks/useCommandCompletion.js +29 -8
  89. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  90. package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -0
  91. package/dist/src/ui/hooks/useFolderTrust.js +16 -8
  92. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  93. package/dist/src/ui/hooks/useGeminiStream.d.ts +0 -1
  94. package/dist/src/ui/hooks/useGeminiStream.js +17 -31
  95. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  96. package/dist/src/ui/hooks/usePromptCompletion.d.ts +23 -0
  97. package/dist/src/ui/hooks/usePromptCompletion.js +176 -0
  98. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -0
  99. package/dist/src/ui/hooks/useReactToolScheduler.js +0 -1
  100. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  101. package/dist/src/ui/hooks/useToolScheduler.test.js +32 -24
  102. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  103. package/dist/src/ui/themes/theme-manager.d.ts +2 -0
  104. package/dist/src/ui/themes/theme-manager.js +72 -5
  105. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  106. package/dist/src/ui/themes/theme-manager.test.js +60 -1
  107. package/dist/src/ui/themes/theme-manager.test.js.map +1 -1
  108. package/dist/src/ui/types.d.ts +2 -1
  109. package/dist/src/ui/types.js.map +1 -1
  110. package/dist/src/ui/utils/MarkdownDisplay.js +2 -1
  111. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  112. package/dist/src/ui/utils/MarkdownDisplay.test.js +17 -16
  113. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  114. package/dist/src/ui/utils/commandUtils.js +16 -3
  115. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  116. package/dist/src/ui/utils/commandUtils.test.js +55 -7
  117. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  118. package/dist/src/ui/utils/platformConstants.d.ts +7 -0
  119. package/dist/src/ui/utils/platformConstants.js +7 -0
  120. package/dist/src/ui/utils/platformConstants.js.map +1 -1
  121. package/dist/src/ui/utils/textUtils.d.ts +18 -0
  122. package/dist/src/ui/utils/textUtils.js +44 -0
  123. package/dist/src/ui/utils/textUtils.js.map +1 -1
  124. package/dist/src/utils/license.d.ts +13 -0
  125. package/dist/src/utils/license.js +35 -0
  126. package/dist/src/utils/license.js.map +1 -0
  127. package/dist/src/utils/license.test.d.ts +6 -0
  128. package/dist/src/utils/license.test.js +77 -0
  129. package/dist/src/utils/license.test.js.map +1 -0
  130. package/dist/src/utils/readStdin.js +57 -18
  131. package/dist/src/utils/readStdin.js.map +1 -1
  132. package/dist/src/utils/sandbox.d.ts +1 -1
  133. package/dist/src/utils/sandbox.js +9 -8
  134. package/dist/src/utils/sandbox.js.map +1 -1
  135. package/dist/src/zed-integration/acp.js +2 -1
  136. package/dist/src/zed-integration/acp.js.map +1 -1
  137. package/dist/src/zed-integration/schema.d.ts +116 -13
  138. package/dist/src/zed-integration/schema.js +7 -1
  139. package/dist/src/zed-integration/schema.js.map +1 -1
  140. package/dist/src/zed-integration/zedIntegration.js +130 -94
  141. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  142. package/dist/tsconfig.tsbuildinfo +1 -1
  143. package/package.json +3 -3
@@ -163,7 +163,9 @@ describe('commandUtils', () => {
163
163
  setTimeout(() => {
164
164
  if (callCount === 0) {
165
165
  // First call (xclip) fails
166
- child.stderr.emit('data', 'xclip not found');
166
+ const error = new Error('spawn xclip ENOENT');
167
+ error.code = 'ENOENT';
168
+ child.emit('error', error);
167
169
  child.emit('close', 1);
168
170
  callCount++;
169
171
  }
@@ -179,9 +181,12 @@ describe('commandUtils', () => {
179
181
  expect(mockSpawn).toHaveBeenNthCalledWith(1, 'xclip', ['-selection', 'clipboard'], linuxOptions);
180
182
  expect(mockSpawn).toHaveBeenNthCalledWith(2, 'xsel', ['--clipboard', '--input'], linuxOptions);
181
183
  });
182
- it('should throw error when both xclip and xsel fail', async () => {
184
+ it('should throw error when both xclip and xsel are not found', async () => {
183
185
  const testText = 'Hello, world!';
184
186
  let callCount = 0;
187
+ const linuxOptions = {
188
+ stdio: ['pipe', 'inherit', 'pipe'],
189
+ };
185
190
  mockSpawn.mockImplementation(() => {
186
191
  const child = Object.assign(new EventEmitter(), {
187
192
  stdin: Object.assign(new EventEmitter(), {
@@ -192,21 +197,64 @@ describe('commandUtils', () => {
192
197
  });
193
198
  setTimeout(() => {
194
199
  if (callCount === 0) {
195
- // First call (xclip) fails
196
- child.stderr.emit('data', 'xclip command not found');
200
+ // First call (xclip) fails with ENOENT
201
+ const error = new Error('spawn xclip ENOENT');
202
+ error.code = 'ENOENT';
203
+ child.emit('error', error);
197
204
  child.emit('close', 1);
198
205
  callCount++;
199
206
  }
200
207
  else {
201
- // Second call (xsel) fails
202
- child.stderr.emit('data', 'xsel command not found');
208
+ // Second call (xsel) fails with ENOENT
209
+ const error = new Error('spawn xsel ENOENT');
210
+ error.code = 'ENOENT';
211
+ child.emit('error', error);
203
212
  child.emit('close', 1);
204
213
  }
205
214
  }, 0);
206
215
  return child;
207
216
  });
208
- await expect(copyToClipboard(testText)).rejects.toThrow(/All copy commands failed/);
217
+ await expect(copyToClipboard(testText)).rejects.toThrow('Please ensure xclip or xsel is installed and configured.');
218
+ expect(mockSpawn).toHaveBeenCalledTimes(2);
219
+ expect(mockSpawn).toHaveBeenNthCalledWith(1, 'xclip', ['-selection', 'clipboard'], linuxOptions);
220
+ expect(mockSpawn).toHaveBeenNthCalledWith(2, 'xsel', ['--clipboard', '--input'], linuxOptions);
221
+ });
222
+ it('should emit error when xclip or xsel fail with stderr output (command installed)', async () => {
223
+ const testText = 'Hello, world!';
224
+ let callCount = 0;
225
+ const linuxOptions = {
226
+ stdio: ['pipe', 'inherit', 'pipe'],
227
+ };
228
+ const errorMsg = "Error: Can't open display:";
229
+ const exitCode = 1;
230
+ mockSpawn.mockImplementation(() => {
231
+ const child = Object.assign(new EventEmitter(), {
232
+ stdin: Object.assign(new EventEmitter(), {
233
+ write: vi.fn(),
234
+ end: vi.fn(),
235
+ }),
236
+ stderr: new EventEmitter(),
237
+ });
238
+ setTimeout(() => {
239
+ // e.g., cannot connect to X server
240
+ if (callCount === 0) {
241
+ child.stderr.emit('data', errorMsg);
242
+ child.emit('close', exitCode);
243
+ callCount++;
244
+ }
245
+ else {
246
+ child.stderr.emit('data', errorMsg);
247
+ child.emit('close', exitCode);
248
+ }
249
+ }, 0);
250
+ return child;
251
+ });
252
+ const xclipErrorMsg = `'xclip' exited with code ${exitCode}${errorMsg ? `: ${errorMsg}` : ''}`;
253
+ const xselErrorMsg = `'xsel' exited with code ${exitCode}${errorMsg ? `: ${errorMsg}` : ''}`;
254
+ await expect(copyToClipboard(testText)).rejects.toThrow(`All copy commands failed. "${xclipErrorMsg}", "${xselErrorMsg}". `);
209
255
  expect(mockSpawn).toHaveBeenCalledTimes(2);
256
+ expect(mockSpawn).toHaveBeenNthCalledWith(1, 'xclip', ['-selection', 'clipboard'], linuxOptions);
257
+ expect(mockSpawn).toHaveBeenNthCalledWith(2, 'xsel', ['--clipboard', '--input'], linuxOptions);
210
258
  });
211
259
  });
212
260
  describe('on unsupported platform', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"commandUtils.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/commandUtils.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commandUtils.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/commandUtils.test.ts"],"names":[],"mappings":"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"}
@@ -41,3 +41,10 @@ export declare const BACKSLASH_ENTER_DETECTION_WINDOW_MS = 5;
41
41
  * We use 12 to provide a small buffer.
42
42
  */
43
43
  export declare const MAX_KITTY_SEQUENCE_LENGTH = 12;
44
+ /**
45
+ * Character codes for common escape sequences
46
+ */
47
+ export declare const CHAR_CODE_ESC = 27;
48
+ export declare const CHAR_CODE_LEFT_BRACKET = 91;
49
+ export declare const CHAR_CODE_1 = 49;
50
+ export declare const CHAR_CODE_2 = 50;
@@ -41,4 +41,11 @@ export const BACKSLASH_ENTER_DETECTION_WINDOW_MS = 5;
41
41
  * We use 12 to provide a small buffer.
42
42
  */
43
43
  export const MAX_KITTY_SEQUENCE_LENGTH = 12;
44
+ /**
45
+ * Character codes for common escape sequences
46
+ */
47
+ export const CHAR_CODE_ESC = 27;
48
+ export const CHAR_CODE_LEFT_BRACKET = 91;
49
+ export const CHAR_CODE_1 = 49;
50
+ export const CHAR_CODE_2 = 50;
44
51
  //# sourceMappingURL=platformConstants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"platformConstants.js","sourceRoot":"","sources":["../../../../src/ui/utils/platformConstants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"platformConstants.js","sourceRoot":"","sources":["../../../../src/ui/utils/platformConstants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,CAAC;AAErC;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AACtC,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAEhD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,QAAQ,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,mCAAmC,GAAG,CAAC,CAAC;AAErD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,CAAC;AAE5C;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAChC,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AACzC,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;AAC9B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC"}
@@ -12,3 +12,21 @@ export declare const getAsciiArtWidth: (asciiArt: string) => number;
12
12
  export declare function toCodePoints(str: string): string[];
13
13
  export declare function cpLen(str: string): number;
14
14
  export declare function cpSlice(str: string, start: number, end?: number): string;
15
+ /**
16
+ * Strip characters that can break terminal rendering.
17
+ *
18
+ * Uses Node.js built-in stripVTControlCharacters to handle VT sequences,
19
+ * then filters remaining control characters that can disrupt display.
20
+ *
21
+ * Characters stripped:
22
+ * - ANSI escape sequences (via strip-ansi)
23
+ * - VT control sequences (via Node.js util.stripVTControlCharacters)
24
+ * - C0 control chars (0x00-0x1F) except CR/LF which are handled elsewhere
25
+ * - C1 control chars (0x80-0x9F) that can cause display issues
26
+ *
27
+ * Characters preserved:
28
+ * - All printable Unicode including emojis
29
+ * - DEL (0x7F) - handled functionally by applyOperations, not a display issue
30
+ * - CR/LF (0x0D/0x0A) - needed for line breaks
31
+ */
32
+ export declare function stripUnsafeCharacters(str: string): string;
@@ -3,6 +3,8 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import stripAnsi from 'strip-ansi';
7
+ import { stripVTControlCharacters } from 'util';
6
8
  /**
7
9
  * Calculates the maximum width of a multi-line ASCII art string.
8
10
  * @param asciiArt The ASCII art string.
@@ -33,4 +35,46 @@ export function cpSlice(str, start, end) {
33
35
  const arr = toCodePoints(str).slice(start, end);
34
36
  return arr.join('');
35
37
  }
38
+ /**
39
+ * Strip characters that can break terminal rendering.
40
+ *
41
+ * Uses Node.js built-in stripVTControlCharacters to handle VT sequences,
42
+ * then filters remaining control characters that can disrupt display.
43
+ *
44
+ * Characters stripped:
45
+ * - ANSI escape sequences (via strip-ansi)
46
+ * - VT control sequences (via Node.js util.stripVTControlCharacters)
47
+ * - C0 control chars (0x00-0x1F) except CR/LF which are handled elsewhere
48
+ * - C1 control chars (0x80-0x9F) that can cause display issues
49
+ *
50
+ * Characters preserved:
51
+ * - All printable Unicode including emojis
52
+ * - DEL (0x7F) - handled functionally by applyOperations, not a display issue
53
+ * - CR/LF (0x0D/0x0A) - needed for line breaks
54
+ */
55
+ export function stripUnsafeCharacters(str) {
56
+ const strippedAnsi = stripAnsi(str);
57
+ const strippedVT = stripVTControlCharacters(strippedAnsi);
58
+ return toCodePoints(strippedVT)
59
+ .filter((char) => {
60
+ const code = char.codePointAt(0);
61
+ if (code === undefined)
62
+ return false;
63
+ // Preserve CR/LF for line handling
64
+ if (code === 0x0a || code === 0x0d)
65
+ return true;
66
+ // Remove C0 control chars (except CR/LF) that can break display
67
+ // Examples: BELL(0x07) makes noise, BS(0x08) moves cursor, VT(0x0B), FF(0x0C)
68
+ if (code >= 0x00 && code <= 0x1f)
69
+ return false;
70
+ // Remove C1 control chars (0x80-0x9f) - legacy 8-bit control codes
71
+ if (code >= 0x80 && code <= 0x9f)
72
+ return false;
73
+ // Preserve DEL (0x7f) - it's handled functionally by applyOperations as backspace
74
+ // and doesn't cause rendering issues when displayed
75
+ // Preserve all other characters including Unicode/emojis
76
+ return true;
77
+ })
78
+ .join('');
79
+ }
36
80
  //# sourceMappingURL=textUtils.js.map
@@ -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;;;;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,OAAO,SAAS,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,MAAM,CAAC;AAEhD;;;;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;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,UAAU,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAE1D,OAAO,YAAY,CAAC,UAAU,CAAC;SAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QAErC,mCAAmC;QACnC,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC;QAEhD,gEAAgE;QAChE,8EAA8E;QAC9E,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAE/C,mEAAmE;QACnE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI;YAAE,OAAO,KAAK,CAAC;QAE/C,kFAAkF;QAClF,oDAAoD;QAEpD,yDAAyD;QACzD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { UserTierId } from '@google/gemini-cli-core';
7
+ /**
8
+ * Get human-readable license display text based on auth type and user tier.
9
+ * @param selectedAuthType - The authentication type selected by the user
10
+ * @param userTier - Optional user tier information from the server
11
+ * @returns Human-readable license information
12
+ */
13
+ export declare function getLicenseDisplay(selectedAuthType: string, userTier?: UserTierId): string;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AuthType, UserTierId } from '@google/gemini-cli-core';
7
+ /**
8
+ * Get human-readable license display text based on auth type and user tier.
9
+ * @param selectedAuthType - The authentication type selected by the user
10
+ * @param userTier - Optional user tier information from the server
11
+ * @returns Human-readable license information
12
+ */
13
+ export function getLicenseDisplay(selectedAuthType, userTier) {
14
+ switch (selectedAuthType) {
15
+ case AuthType.LOGIN_WITH_GOOGLE:
16
+ return 'Free Tier (Login with Google)';
17
+ case AuthType.LOGIN_WITH_GOOGLE_GCA:
18
+ if (userTier === UserTierId.STANDARD) {
19
+ return 'Gemini Code Assist Standard (Google Workspace)';
20
+ }
21
+ else if (userTier === UserTierId.LEGACY) {
22
+ return 'Gemini Code Assist Enterprise (Google Workspace)';
23
+ }
24
+ return 'Gemini Code Assist (Google Workspace)';
25
+ case AuthType.USE_GEMINI:
26
+ return 'Gemini API Key';
27
+ case AuthType.USE_VERTEX_AI:
28
+ return 'Vertex AI';
29
+ case AuthType.CLOUD_SHELL:
30
+ return 'Cloud Shell';
31
+ default:
32
+ return selectedAuthType;
33
+ }
34
+ }
35
+ //# sourceMappingURL=license.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAC/B,gBAAwB,EACxB,QAAqB;IAErB,QAAQ,gBAAgB,EAAE,CAAC;QACzB,KAAK,QAAQ,CAAC,iBAAiB;YAC7B,OAAO,+BAA+B,CAAC;QAEzC,KAAK,QAAQ,CAAC,qBAAqB;YACjC,IAAI,QAAQ,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACrC,OAAO,gDAAgD,CAAC;YAC1D,CAAC;iBAAM,IAAI,QAAQ,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;gBAC1C,OAAO,kDAAkD,CAAC;YAC5D,CAAC;YACD,OAAO,uCAAuC,CAAC;QAEjD,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,gBAAgB,CAAC;QAE1B,KAAK,QAAQ,CAAC,aAAa;YACzB,OAAO,WAAW,CAAC;QAErB,KAAK,QAAQ,CAAC,WAAW;YACvB,OAAO,aAAa,CAAC;QAEvB;YACE,OAAO,gBAAgB,CAAC;IAC5B,CAAC;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect } from 'vitest';
7
+ import { getLicenseDisplay } from './license.js';
8
+ import { AuthType, UserTierId } from '@google/gemini-cli-core';
9
+ describe('getLicenseDisplay', () => {
10
+ describe('Free Tier (Login with Google)', () => {
11
+ it('should return Free Tier for LOGIN_WITH_GOOGLE', () => {
12
+ expect(getLicenseDisplay(AuthType.LOGIN_WITH_GOOGLE)).toBe('Free Tier (Login with Google)');
13
+ });
14
+ it('should ignore userTier for LOGIN_WITH_GOOGLE', () => {
15
+ expect(getLicenseDisplay(AuthType.LOGIN_WITH_GOOGLE, UserTierId.STANDARD)).toBe('Free Tier (Login with Google)');
16
+ expect(getLicenseDisplay(AuthType.LOGIN_WITH_GOOGLE, UserTierId.LEGACY)).toBe('Free Tier (Login with Google)');
17
+ });
18
+ });
19
+ describe('Gemini Code Assist (Google Workspace)', () => {
20
+ it('should return GCA Standard for LOGIN_WITH_GOOGLE_GCA with STANDARD tier', () => {
21
+ expect(getLicenseDisplay(AuthType.LOGIN_WITH_GOOGLE_GCA, UserTierId.STANDARD)).toBe('Gemini Code Assist Standard (Google Workspace)');
22
+ });
23
+ it('should return GCA Enterprise for LOGIN_WITH_GOOGLE_GCA with LEGACY tier', () => {
24
+ expect(getLicenseDisplay(AuthType.LOGIN_WITH_GOOGLE_GCA, UserTierId.LEGACY)).toBe('Gemini Code Assist Enterprise (Google Workspace)');
25
+ });
26
+ it('should return generic GCA for LOGIN_WITH_GOOGLE_GCA without tier', () => {
27
+ expect(getLicenseDisplay(AuthType.LOGIN_WITH_GOOGLE_GCA)).toBe('Gemini Code Assist (Google Workspace)');
28
+ });
29
+ it('should return generic GCA for LOGIN_WITH_GOOGLE_GCA with unknown tier', () => {
30
+ expect(getLicenseDisplay(AuthType.LOGIN_WITH_GOOGLE_GCA, 'unknown-tier')).toBe('Gemini Code Assist (Google Workspace)');
31
+ });
32
+ it('should return generic GCA for LOGIN_WITH_GOOGLE_GCA with FREE tier', () => {
33
+ expect(getLicenseDisplay(AuthType.LOGIN_WITH_GOOGLE_GCA, UserTierId.FREE)).toBe('Gemini Code Assist (Google Workspace)');
34
+ });
35
+ });
36
+ describe('Gemini API Key', () => {
37
+ it('should return Gemini API Key for USE_GEMINI', () => {
38
+ expect(getLicenseDisplay(AuthType.USE_GEMINI)).toBe('Gemini API Key');
39
+ });
40
+ it('should ignore userTier for USE_GEMINI', () => {
41
+ expect(getLicenseDisplay(AuthType.USE_GEMINI, UserTierId.STANDARD)).toBe('Gemini API Key');
42
+ });
43
+ });
44
+ describe('Vertex AI', () => {
45
+ it('should return Vertex AI for USE_VERTEX_AI', () => {
46
+ expect(getLicenseDisplay(AuthType.USE_VERTEX_AI)).toBe('Vertex AI');
47
+ });
48
+ it('should ignore userTier for USE_VERTEX_AI', () => {
49
+ expect(getLicenseDisplay(AuthType.USE_VERTEX_AI, UserTierId.LEGACY)).toBe('Vertex AI');
50
+ });
51
+ });
52
+ describe('Cloud Shell', () => {
53
+ it('should return Cloud Shell for CLOUD_SHELL', () => {
54
+ expect(getLicenseDisplay(AuthType.CLOUD_SHELL)).toBe('Cloud Shell');
55
+ });
56
+ it('should ignore userTier for CLOUD_SHELL', () => {
57
+ expect(getLicenseDisplay(AuthType.CLOUD_SHELL, UserTierId.STANDARD)).toBe('Cloud Shell');
58
+ });
59
+ });
60
+ describe('Unknown auth types', () => {
61
+ it('should return the auth type as-is for unknown values', () => {
62
+ expect(getLicenseDisplay('custom-auth-type')).toBe('custom-auth-type');
63
+ expect(getLicenseDisplay('oauth')).toBe('oauth');
64
+ expect(getLicenseDisplay('unknown-auth')).toBe('unknown-auth');
65
+ });
66
+ it('should handle undefined gracefully', () => {
67
+ expect(getLicenseDisplay(undefined)).toBe(undefined);
68
+ });
69
+ it('should handle null gracefully', () => {
70
+ expect(getLicenseDisplay(null)).toBe(null);
71
+ });
72
+ it('should handle empty string', () => {
73
+ expect(getLicenseDisplay('')).toBe('');
74
+ });
75
+ });
76
+ });
77
+ //# sourceMappingURL=license.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"license.test.js","sourceRoot":"","sources":["../../../src/utils/license.test.ts"],"names":[],"mappings":"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"}
@@ -8,34 +8,73 @@ export async function readStdin() {
8
8
  return new Promise((resolve, reject) => {
9
9
  let data = '';
10
10
  let totalSize = 0;
11
+ let hasReceivedData = false;
11
12
  process.stdin.setEncoding('utf8');
12
- const onReadable = () => {
13
+ function cleanup() {
14
+ clearTimeout(timeout);
15
+ process.stdin.removeListener('readable', onReadable);
16
+ process.stdin.removeListener('end', onEnd);
17
+ process.stdin.removeListener('error', onError);
18
+ }
19
+ function processChunk(chunk) {
20
+ hasReceivedData = true;
21
+ if (totalSize + chunk.length > MAX_STDIN_SIZE) {
22
+ const remainingSize = MAX_STDIN_SIZE - totalSize;
23
+ data += chunk.slice(0, remainingSize);
24
+ console.warn(`Warning: stdin input truncated to ${MAX_STDIN_SIZE} bytes.`);
25
+ process.stdin.destroy();
26
+ return true; // Indicates truncation occurred
27
+ }
28
+ else {
29
+ data += chunk;
30
+ totalSize += chunk.length;
31
+ return false;
32
+ }
33
+ }
34
+ function checkInitialState() {
35
+ if (process.stdin.destroyed || process.stdin.readableEnded) {
36
+ cleanup();
37
+ resolve('');
38
+ return true;
39
+ }
40
+ const chunk = process.stdin.read();
41
+ if (chunk !== null) {
42
+ processChunk(chunk);
43
+ return false;
44
+ }
45
+ if (!process.stdin.readable) {
46
+ cleanup();
47
+ resolve('');
48
+ return true;
49
+ }
50
+ return false;
51
+ }
52
+ if (checkInitialState()) {
53
+ return;
54
+ }
55
+ function onReadable() {
13
56
  let chunk;
14
57
  while ((chunk = process.stdin.read()) !== null) {
15
- if (totalSize + chunk.length > MAX_STDIN_SIZE) {
16
- const remainingSize = MAX_STDIN_SIZE - totalSize;
17
- data += chunk.slice(0, remainingSize);
18
- console.warn(`Warning: stdin input truncated to ${MAX_STDIN_SIZE} bytes.`);
19
- process.stdin.destroy(); // Stop reading further
58
+ const truncated = processChunk(chunk);
59
+ if (truncated) {
20
60
  break;
21
61
  }
22
- data += chunk;
23
- totalSize += chunk.length;
24
62
  }
25
- };
26
- const onEnd = () => {
63
+ }
64
+ function onEnd() {
27
65
  cleanup();
28
66
  resolve(data);
29
- };
30
- const onError = (err) => {
67
+ }
68
+ function onError(err) {
31
69
  cleanup();
32
70
  reject(err);
33
- };
34
- const cleanup = () => {
35
- process.stdin.removeListener('readable', onReadable);
36
- process.stdin.removeListener('end', onEnd);
37
- process.stdin.removeListener('error', onError);
38
- };
71
+ }
72
+ const timeout = setTimeout(() => {
73
+ if (!hasReceivedData) {
74
+ cleanup();
75
+ resolve('');
76
+ }
77
+ }, 50);
39
78
  process.stdin.on('readable', onReadable);
40
79
  process.stdin.on('end', onEnd);
41
80
  process.stdin.on('error', onError);
@@ -1 +1 @@
1
- {"version":3,"file":"readStdin.js","sourceRoot":"","sources":["../../../src/utils/readStdin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,MAAM,UAAU,GAAG,GAAG,EAAE;YACtB,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;oBAC9C,MAAM,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;oBACjD,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;oBACtC,OAAO,CAAC,IAAI,CACV,qCAAqC,cAAc,SAAS,CAC7D,CAAC;oBACF,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,uBAAuB;oBAChD,MAAM;gBACR,CAAC;gBACD,IAAI,IAAI,KAAK,CAAC;gBACd,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,GAAU,EAAE,EAAE;YAC7B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"readStdin.js","sourceRoot":"","sources":["../../../src/utils/readStdin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,cAAc,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;IAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,eAAe,GAAG,KAAK,CAAC;QAE5B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAElC,SAAS,OAAO;YACd,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACrD,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAED,SAAS,YAAY,CAAC,KAAa;YACjC,eAAe,GAAG,IAAI,CAAC;YACvB,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,cAAc,EAAE,CAAC;gBAC9C,MAAM,aAAa,GAAG,cAAc,GAAG,SAAS,CAAC;gBACjD,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,CACV,qCAAqC,cAAc,SAAS,CAC7D,CAAC;gBACF,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACxB,OAAO,IAAI,CAAC,CAAC,gCAAgC;YAC/C,CAAC;iBAAM,CAAC;gBACN,IAAI,IAAI,KAAK,CAAC;gBACd,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;gBAC1B,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,SAAS,iBAAiB;YACxB,IAAI,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;gBAC3D,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,EAAE,CAAC,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO,KAAK,CAAC;YACf,CAAC;YAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,EAAE,CAAC,CAAC;gBACZ,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,iBAAiB,EAAE,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,SAAS,UAAU;YACjB,IAAI,KAAK,CAAC;YACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;gBAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;gBACtC,IAAI,SAAS,EAAE,CAAC;oBACd,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,SAAS,KAAK;YACZ,OAAO,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC;QAED,SAAS,OAAO,CAAC,GAAU;YACzB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,GAAG,CAAC,CAAC;QACd,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,EAAE,CAAC,CAAC;YACd,CAAC;QACH,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -4,4 +4,4 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { Config, SandboxConfig } from '@google/gemini-cli-core';
7
- export declare function start_sandbox(config: SandboxConfig, nodeArgs?: string[], cliConfig?: Config): Promise<void>;
7
+ export declare function start_sandbox(config: SandboxConfig, nodeArgs?: string[], cliConfig?: Config, cliArgs?: string[]): Promise<void>;
@@ -8,6 +8,7 @@ import os from 'node:os';
8
8
  import path from 'node:path';
9
9
  import fs from 'node:fs';
10
10
  import { readFile } from 'node:fs/promises';
11
+ import { fileURLToPath } from 'node:url';
11
12
  import { quote, parse } from 'shell-quote';
12
13
  import { USER_SETTINGS_DIR, SETTINGS_DIRECTORY_NAME, } from '../config/settings.js';
13
14
  import { promisify } from 'util';
@@ -96,7 +97,7 @@ function ports() {
96
97
  .filter((p) => p.trim())
97
98
  .map((p) => p.trim());
98
99
  }
99
- function entrypoint(workdir) {
100
+ function entrypoint(workdir, cliArgs) {
100
101
  const isWindows = os.platform() === 'win32';
101
102
  const containerWorkdir = getContainerPath(workdir);
102
103
  const shellCmds = [];
@@ -132,7 +133,7 @@ function entrypoint(workdir) {
132
133
  shellCmds.push(`source ${getContainerPath(projectSandboxBashrc)};`);
133
134
  }
134
135
  ports().forEach((p) => shellCmds.push(`socat TCP4-LISTEN:${p},bind=$(hostname -i),fork,reuseaddr TCP4:127.0.0.1:${p} 2> /dev/null &`));
135
- const cliArgs = process.argv.slice(2).map((arg) => quote([arg]));
136
+ const quotedCliArgs = cliArgs.slice(2).map((arg) => quote([arg]));
136
137
  const cliCmd = process.env['NODE_ENV'] === 'development'
137
138
  ? process.env['DEBUG']
138
139
  ? 'npm run debug --'
@@ -140,10 +141,10 @@ function entrypoint(workdir) {
140
141
  : process.env['DEBUG']
141
142
  ? `node --inspect-brk=0.0.0.0:${process.env['DEBUG_PORT'] || '9229'} $(which gemini)`
142
143
  : 'gemini';
143
- const args = [...shellCmds, cliCmd, ...cliArgs];
144
+ const args = [...shellCmds, cliCmd, ...quotedCliArgs];
144
145
  return ['bash', '-c', args.join(' ')];
145
146
  }
146
- export async function start_sandbox(config, nodeArgs = [], cliConfig) {
147
+ export async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
147
148
  const patcher = new ConsolePatcher({
148
149
  debugMode: cliConfig?.getDebugMode() || !!process.env['DEBUG'],
149
150
  stderr: true,
@@ -157,8 +158,7 @@ export async function start_sandbox(config, nodeArgs = [], cliConfig) {
157
158
  process.exit(1);
158
159
  }
159
160
  const profile = (process.env['SEATBELT_PROFILE'] ??= 'permissive-open');
160
- let profileFile = new URL(`sandbox-macos-${profile}.sb`, import.meta.url)
161
- .pathname;
161
+ let profileFile = fileURLToPath(new URL(`sandbox-macos-${profile}.sb`, import.meta.url));
162
162
  // if profile name is not recognized, then look for file under project settings directory
163
163
  if (!BUILTIN_SEATBELT_PROFILES.includes(profile)) {
164
164
  profileFile = path.join(SETTINGS_DIRECTORY_NAME, `sandbox-macos-${profile}.sb`);
@@ -207,10 +207,11 @@ export async function start_sandbox(config, nodeArgs = [], cliConfig) {
207
207
  }
208
208
  args.push('-D', `INCLUDE_DIR_${i}=${dirPath}`);
209
209
  }
210
+ const finalArgv = cliArgs;
210
211
  args.push('-f', profileFile, 'sh', '-c', [
211
212
  `SANDBOX=sandbox-exec`,
212
213
  `NODE_OPTIONS="${nodeOptions}"`,
213
- ...process.argv.map((arg) => quote([arg])),
214
+ ...finalArgv.map((arg) => quote([arg])),
214
215
  ].join(' '));
215
216
  // start and set up proxy if GEMINI_SANDBOX_PROXY_COMMAND is set
216
217
  const proxyCommand = process.env['GEMINI_SANDBOX_PROXY_COMMAND'];
@@ -524,7 +525,7 @@ export async function start_sandbox(config, nodeArgs = [], cliConfig) {
524
525
  // Determine if the current user's UID/GID should be passed to the sandbox.
525
526
  // See shouldUseCurrentUserInSandbox for more details.
526
527
  let userFlag = '';
527
- const finalEntrypoint = entrypoint(workdir);
528
+ const finalEntrypoint = entrypoint(workdir, cliArgs);
528
529
  if (process.env['GEMINI_CLI_INTEGRATION_TEST'] === 'true') {
529
530
  args.push('--user', 'root');
530
531
  userFlag = '--user root';