@google/gemini-cli 0.1.22 → 0.2.0-preview.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +32 -2
- package/dist/package.json +2 -2
- package/dist/src/config/config.d.ts +1 -0
- package/dist/src/config/config.js +15 -1
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +0 -1
- package/dist/src/config/extension.js +3 -2
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/settings.d.ts +4 -3
- package/dist/src/config/settings.js +57 -49
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +69 -6
- package/dist/src/config/settingsSchema.js +69 -6
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +2 -1
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/gemini.js +25 -2
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +1 -1
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/nonInteractiveCli.js +22 -22
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/services/FileCommandLoader.js +4 -3
- package/dist/src/services/FileCommandLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.d.ts +11 -1
- package/dist/src/services/McpPromptLoader.js +42 -16
- package/dist/src/services/McpPromptLoader.js.map +1 -1
- package/dist/src/services/McpPromptLoader.test.d.ts +6 -0
- package/dist/src/services/McpPromptLoader.test.js +114 -0
- package/dist/src/services/McpPromptLoader.test.js.map +1 -0
- package/dist/src/services/prompt-processors/shellProcessor.js +2 -10
- package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
- package/dist/src/ui/App.js +52 -20
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +2 -1
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.js +7 -1
- package/dist/src/ui/commands/bugCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +2 -1
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/copyCommand.js +1 -1
- package/dist/src/ui/commands/copyCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +29 -11
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +6 -6
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/restoreCommand.js +2 -6
- package/dist/src/ui/commands/restoreCommand.js.map +1 -1
- package/dist/src/ui/commands/setupGithubCommand.d.ts +1 -0
- package/dist/src/ui/commands/setupGithubCommand.js +39 -1
- package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
- package/dist/src/ui/commands/setupGithubCommand.test.js +99 -1
- package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
- package/dist/src/ui/commands/toolsCommand.js +1 -1
- package/dist/src/ui/commands/toolsCommand.js.map +1 -1
- package/dist/src/ui/components/AuthDialog.test.js +10 -10
- package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.js +1 -1
- package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.d.ts +1 -0
- package/dist/src/ui/components/FolderTrustDialog.js +9 -3
- package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
- package/dist/src/ui/components/FolderTrustDialog.test.js +40 -3
- package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/Help.js +1 -1
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +146 -14
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.js +363 -62
- package/dist/src/ui/components/SettingsDialog.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.test.js +168 -95
- package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
- package/dist/src/ui/components/StatsDisplay.js +9 -8
- package/dist/src/ui/components/StatsDisplay.js.map +1 -1
- package/dist/src/ui/components/messages/CompressionMessage.js +2 -1
- package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
- package/dist/src/ui/components/messages/DiffRenderer.js +2 -1
- package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
- package/dist/src/ui/components/messages/DiffRenderer.test.js +11 -10
- package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
- package/dist/src/ui/components/messages/GeminiMessage.js +2 -1
- package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
- package/dist/src/ui/components/messages/UserMessage.js +2 -1
- package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.js +7 -45
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/constants.d.ts +2 -0
- package/dist/src/ui/constants.js +2 -0
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.js +24 -25
- package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
- package/dist/src/ui/contexts/KeypressContext.test.js +36 -37
- package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
- package/dist/src/ui/contexts/SessionContext.d.ts +2 -0
- package/dist/src/ui/contexts/SessionContext.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.js +1 -4
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/atCommandProcessor.test.js +30 -7
- package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.js +8 -13
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.test.js +11 -15
- package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +17 -5
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAtCompletion.js +1 -0
- package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useCommandCompletion.d.ts +4 -1
- package/dist/src/ui/hooks/useCommandCompletion.js +29 -8
- package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -0
- package/dist/src/ui/hooks/useFolderTrust.js +16 -8
- package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +30 -11
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useLogger.d.ts +2 -2
- package/dist/src/ui/hooks/useLogger.js +3 -3
- package/dist/src/ui/hooks/useLogger.js.map +1 -1
- package/dist/src/ui/hooks/useMessageQueue.d.ts +22 -0
- package/dist/src/ui/hooks/useMessageQueue.js +49 -0
- package/dist/src/ui/hooks/useMessageQueue.js.map +1 -0
- package/dist/src/ui/hooks/useMessageQueue.test.d.ts +6 -0
- package/dist/src/ui/hooks/useMessageQueue.test.js +158 -0
- package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -0
- package/dist/src/ui/hooks/usePrivacySettings.js +6 -2
- package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
- package/dist/src/ui/hooks/usePrivacySettings.test.d.ts +6 -0
- package/dist/src/ui/hooks/usePrivacySettings.test.js +154 -0
- package/dist/src/ui/hooks/usePrivacySettings.test.js.map +1 -0
- package/dist/src/ui/hooks/usePromptCompletion.d.ts +23 -0
- package/dist/src/ui/hooks/usePromptCompletion.js +176 -0
- package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -0
- package/dist/src/ui/hooks/useReactToolScheduler.js +0 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useShellHistory.d.ts +2 -1
- package/dist/src/ui/hooks/useShellHistory.js +7 -8
- package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
- package/dist/src/ui/hooks/useShellHistory.test.js +26 -1
- package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -1
- package/dist/src/ui/hooks/useToolScheduler.test.js +5 -7
- package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.js +2 -1
- package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
- package/dist/src/ui/utils/MarkdownDisplay.test.js +17 -16
- package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.js +36 -11
- package/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.test.js +64 -19
- package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
- package/dist/src/ui/utils/computeStats.js +3 -1
- package/dist/src/ui/utils/computeStats.js.map +1 -1
- package/dist/src/ui/utils/textUtils.d.ts +18 -0
- package/dist/src/ui/utils/textUtils.js +44 -0
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/utils/cleanup.js +3 -2
- package/dist/src/utils/cleanup.js.map +1 -1
- package/dist/src/utils/readStdin.js +57 -18
- package/dist/src/utils/readStdin.js.map +1 -1
- package/dist/src/utils/sandbox.d.ts +1 -1
- package/dist/src/utils/sandbox.js +7 -6
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/settingsUtils.d.ts +8 -0
- package/dist/src/utils/settingsUtils.js +16 -7
- package/dist/src/utils/settingsUtils.js.map +1 -1
- package/dist/src/utils/settingsUtils.test.js +6 -6
- package/dist/src/utils/settingsUtils.test.js.map +1 -1
- package/dist/src/zed-integration/acp.js +2 -1
- package/dist/src/zed-integration/acp.js.map +1 -1
- package/dist/src/zed-integration/fileSystemService.d.ts +19 -0
- package/dist/src/zed-integration/fileSystemService.js +43 -0
- package/dist/src/zed-integration/fileSystemService.js.map +1 -0
- package/dist/src/zed-integration/zedIntegration.js +17 -5
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -25,10 +25,12 @@ query.startsWith('@') || /\s@/.test(query);
|
|
|
25
25
|
export const isSlashCommand = (query) => query.startsWith('/');
|
|
26
26
|
// Copies a string snippet to the clipboard for different platforms
|
|
27
27
|
export const copyToClipboard = async (text) => {
|
|
28
|
-
const run = (cmd, args) => new Promise((resolve, reject) => {
|
|
29
|
-
const child = spawn(cmd, args);
|
|
28
|
+
const run = (cmd, args, options) => new Promise((resolve, reject) => {
|
|
29
|
+
const child = options ? spawn(cmd, args, options) : spawn(cmd, args);
|
|
30
30
|
let stderr = '';
|
|
31
|
-
child.stderr
|
|
31
|
+
if (child.stderr) {
|
|
32
|
+
child.stderr.on('data', (chunk) => (stderr += chunk.toString()));
|
|
33
|
+
}
|
|
32
34
|
child.on('error', reject);
|
|
33
35
|
child.on('close', (code) => {
|
|
34
36
|
if (code === 0)
|
|
@@ -36,10 +38,20 @@ export const copyToClipboard = async (text) => {
|
|
|
36
38
|
const errorMsg = stderr.trim();
|
|
37
39
|
reject(new Error(`'${cmd}' exited with code ${code}${errorMsg ? `: ${errorMsg}` : ''}`));
|
|
38
40
|
});
|
|
39
|
-
child.stdin
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
if (child.stdin) {
|
|
42
|
+
child.stdin.on('error', reject);
|
|
43
|
+
child.stdin.write(text);
|
|
44
|
+
child.stdin.end();
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
reject(new Error('Child process has no stdin stream to write to.'));
|
|
48
|
+
}
|
|
42
49
|
});
|
|
50
|
+
// Configure stdio for Linux clipboard commands.
|
|
51
|
+
// - stdin: 'pipe' to write the text that needs to be copied.
|
|
52
|
+
// - stdout: 'inherit' since we don't need to capture the command's output on success.
|
|
53
|
+
// - stderr: 'pipe' to capture error messages (e.g., "command not found") for better error handling.
|
|
54
|
+
const linuxOptions = { stdio: ['pipe', 'inherit', 'pipe'] };
|
|
43
55
|
switch (process.platform) {
|
|
44
56
|
case 'win32':
|
|
45
57
|
return run('clip', []);
|
|
@@ -47,21 +59,34 @@ export const copyToClipboard = async (text) => {
|
|
|
47
59
|
return run('pbcopy', []);
|
|
48
60
|
case 'linux':
|
|
49
61
|
try {
|
|
50
|
-
await run('xclip', ['-selection', 'clipboard']);
|
|
62
|
+
await run('xclip', ['-selection', 'clipboard'], linuxOptions);
|
|
51
63
|
}
|
|
52
64
|
catch (primaryError) {
|
|
53
65
|
try {
|
|
54
66
|
// If xclip fails for any reason, try xsel as a fallback.
|
|
55
|
-
await run('xsel', ['--clipboard', '--input']);
|
|
67
|
+
await run('xsel', ['--clipboard', '--input'], linuxOptions);
|
|
56
68
|
}
|
|
57
69
|
catch (fallbackError) {
|
|
58
|
-
const
|
|
70
|
+
const xclipNotFound = primaryError instanceof Error &&
|
|
71
|
+
primaryError.code === 'ENOENT';
|
|
72
|
+
const xselNotFound = fallbackError instanceof Error &&
|
|
73
|
+
fallbackError.code === 'ENOENT';
|
|
74
|
+
if (xclipNotFound && xselNotFound) {
|
|
75
|
+
throw new Error('Please ensure xclip or xsel is installed and configured.');
|
|
76
|
+
}
|
|
77
|
+
let primaryMsg = primaryError instanceof Error
|
|
59
78
|
? primaryError.message
|
|
60
79
|
: String(primaryError);
|
|
61
|
-
|
|
80
|
+
if (xclipNotFound) {
|
|
81
|
+
primaryMsg = `xclip not found`;
|
|
82
|
+
}
|
|
83
|
+
let fallbackMsg = fallbackError instanceof Error
|
|
62
84
|
? fallbackError.message
|
|
63
85
|
: String(fallbackError);
|
|
64
|
-
|
|
86
|
+
if (xselNotFound) {
|
|
87
|
+
fallbackMsg = `xsel not found`;
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`All copy commands failed. "${primaryMsg}", "${fallbackMsg}". `);
|
|
65
90
|
}
|
|
66
91
|
}
|
|
67
92
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/commandUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/commandUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -135,20 +135,23 @@ describe('commandUtils', () => {
|
|
|
135
135
|
});
|
|
136
136
|
it('should successfully copy text to clipboard using xclip', async () => {
|
|
137
137
|
const testText = 'Hello, world!';
|
|
138
|
+
const linuxOptions = {
|
|
139
|
+
stdio: ['pipe', 'inherit', 'pipe'],
|
|
140
|
+
};
|
|
138
141
|
setTimeout(() => {
|
|
139
142
|
mockChild.emit('close', 0);
|
|
140
143
|
}, 0);
|
|
141
144
|
await copyToClipboard(testText);
|
|
142
|
-
expect(mockSpawn).toHaveBeenCalledWith('xclip', [
|
|
143
|
-
'-selection',
|
|
144
|
-
'clipboard',
|
|
145
|
-
]);
|
|
145
|
+
expect(mockSpawn).toHaveBeenCalledWith('xclip', ['-selection', 'clipboard'], linuxOptions);
|
|
146
146
|
expect(mockChild.stdin.write).toHaveBeenCalledWith(testText);
|
|
147
147
|
expect(mockChild.stdin.end).toHaveBeenCalled();
|
|
148
148
|
});
|
|
149
149
|
it('should fall back to xsel when xclip fails', async () => {
|
|
150
150
|
const testText = 'Hello, world!';
|
|
151
151
|
let callCount = 0;
|
|
152
|
+
const linuxOptions = {
|
|
153
|
+
stdio: ['pipe', 'inherit', 'pipe'],
|
|
154
|
+
};
|
|
152
155
|
mockSpawn.mockImplementation(() => {
|
|
153
156
|
const child = Object.assign(new EventEmitter(), {
|
|
154
157
|
stdin: Object.assign(new EventEmitter(), {
|
|
@@ -160,7 +163,9 @@ describe('commandUtils', () => {
|
|
|
160
163
|
setTimeout(() => {
|
|
161
164
|
if (callCount === 0) {
|
|
162
165
|
// First call (xclip) fails
|
|
163
|
-
|
|
166
|
+
const error = new Error('spawn xclip ENOENT');
|
|
167
|
+
error.code = 'ENOENT';
|
|
168
|
+
child.emit('error', error);
|
|
164
169
|
child.emit('close', 1);
|
|
165
170
|
callCount++;
|
|
166
171
|
}
|
|
@@ -173,18 +178,15 @@ describe('commandUtils', () => {
|
|
|
173
178
|
});
|
|
174
179
|
await copyToClipboard(testText);
|
|
175
180
|
expect(mockSpawn).toHaveBeenCalledTimes(2);
|
|
176
|
-
expect(mockSpawn).toHaveBeenNthCalledWith(1, 'xclip', [
|
|
177
|
-
|
|
178
|
-
'clipboard',
|
|
179
|
-
]);
|
|
180
|
-
expect(mockSpawn).toHaveBeenNthCalledWith(2, 'xsel', [
|
|
181
|
-
'--clipboard',
|
|
182
|
-
'--input',
|
|
183
|
-
]);
|
|
181
|
+
expect(mockSpawn).toHaveBeenNthCalledWith(1, 'xclip', ['-selection', 'clipboard'], linuxOptions);
|
|
182
|
+
expect(mockSpawn).toHaveBeenNthCalledWith(2, 'xsel', ['--clipboard', '--input'], linuxOptions);
|
|
184
183
|
});
|
|
185
|
-
it('should throw error when both xclip and xsel
|
|
184
|
+
it('should throw error when both xclip and xsel are not found', async () => {
|
|
186
185
|
const testText = 'Hello, world!';
|
|
187
186
|
let callCount = 0;
|
|
187
|
+
const linuxOptions = {
|
|
188
|
+
stdio: ['pipe', 'inherit', 'pipe'],
|
|
189
|
+
};
|
|
188
190
|
mockSpawn.mockImplementation(() => {
|
|
189
191
|
const child = Object.assign(new EventEmitter(), {
|
|
190
192
|
stdin: Object.assign(new EventEmitter(), {
|
|
@@ -195,21 +197,64 @@ describe('commandUtils', () => {
|
|
|
195
197
|
});
|
|
196
198
|
setTimeout(() => {
|
|
197
199
|
if (callCount === 0) {
|
|
198
|
-
// First call (xclip) fails
|
|
199
|
-
|
|
200
|
+
// First call (xclip) fails with ENOENT
|
|
201
|
+
const error = new Error('spawn xclip ENOENT');
|
|
202
|
+
error.code = 'ENOENT';
|
|
203
|
+
child.emit('error', error);
|
|
200
204
|
child.emit('close', 1);
|
|
201
205
|
callCount++;
|
|
202
206
|
}
|
|
203
207
|
else {
|
|
204
|
-
// Second call (xsel) fails
|
|
205
|
-
|
|
208
|
+
// Second call (xsel) fails with ENOENT
|
|
209
|
+
const error = new Error('spawn xsel ENOENT');
|
|
210
|
+
error.code = 'ENOENT';
|
|
211
|
+
child.emit('error', error);
|
|
206
212
|
child.emit('close', 1);
|
|
207
213
|
}
|
|
208
214
|
}, 0);
|
|
209
215
|
return child;
|
|
210
216
|
});
|
|
211
|
-
await expect(copyToClipboard(testText)).rejects.toThrow(
|
|
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}". `);
|
|
212
255
|
expect(mockSpawn).toHaveBeenCalledTimes(2);
|
|
256
|
+
expect(mockSpawn).toHaveBeenNthCalledWith(1, 'xclip', ['-selection', 'clipboard'], linuxOptions);
|
|
257
|
+
expect(mockSpawn).toHaveBeenNthCalledWith(2, 'xsel', ['--clipboard', '--input'], linuxOptions);
|
|
213
258
|
});
|
|
214
259
|
});
|
|
215
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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"}
|
|
@@ -22,7 +22,7 @@ export function calculateCacheHitRate(metrics) {
|
|
|
22
22
|
return (metrics.tokens.cached / metrics.tokens.prompt) * 100;
|
|
23
23
|
}
|
|
24
24
|
export const computeSessionStats = (metrics) => {
|
|
25
|
-
const { models, tools } = metrics;
|
|
25
|
+
const { models, tools, files } = metrics;
|
|
26
26
|
const totalApiTime = Object.values(models).reduce((acc, model) => acc + model.api.totalLatencyMs, 0);
|
|
27
27
|
const totalToolTime = tools.totalDurationMs;
|
|
28
28
|
const agentActiveTime = totalApiTime + totalToolTime;
|
|
@@ -50,6 +50,8 @@ export const computeSessionStats = (metrics) => {
|
|
|
50
50
|
agreementRate,
|
|
51
51
|
totalCachedTokens,
|
|
52
52
|
totalPromptTokens,
|
|
53
|
+
totalLinesAdded: files.totalLinesAdded,
|
|
54
|
+
totalLinesRemoved: files.totalLinesRemoved,
|
|
53
55
|
};
|
|
54
56
|
};
|
|
55
57
|
//# sourceMappingURL=computeStats.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"computeStats.js","sourceRoot":"","sources":["../../../../src/ui/utils/computeStats.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAQH,MAAM,UAAU,kBAAkB,CAAC,OAAqB;IACtD,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAqB;IAC3D,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAC/D,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,OAAuB,EACD,EAAE;IACxB,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"computeStats.js","sourceRoot":"","sources":["../../../../src/ui/utils/computeStats.ts"],"names":[],"mappings":"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"}
|
|
@@ -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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { promises as fs } from 'fs';
|
|
7
7
|
import { join } from 'path';
|
|
8
|
-
import {
|
|
8
|
+
import { Storage } from '@google/gemini-cli-core';
|
|
9
9
|
const cleanupFunctions = [];
|
|
10
10
|
export function registerCleanup(fn) {
|
|
11
11
|
cleanupFunctions.push(fn);
|
|
@@ -22,7 +22,8 @@ export async function runExitCleanup() {
|
|
|
22
22
|
cleanupFunctions.length = 0; // Clear the array
|
|
23
23
|
}
|
|
24
24
|
export async function cleanupCheckpoints() {
|
|
25
|
-
const
|
|
25
|
+
const storage = new Storage(process.cwd());
|
|
26
|
+
const tempDir = storage.getProjectTempDir();
|
|
26
27
|
const checkpointsDir = join(tempDir, 'checkpoints');
|
|
27
28
|
try {
|
|
28
29
|
await fs.rm(checkpointsDir, { recursive: true, force: true });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cleanup.js","sourceRoot":"","sources":["../../../src/utils/cleanup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAElD,MAAM,gBAAgB,GAAgD,EAAE,CAAC;AAEzE,MAAM,UAAU,eAAe,CAAC,EAAwC;IACtE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,CAAC;QACb,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,gCAAgC;QAClC,CAAC;IACH,CAAC;IACD,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,kBAAkB;AACjD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC;IAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,EAAE,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -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
|
-
|
|
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
|
-
|
|
16
|
-
|
|
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
|
-
|
|
63
|
+
}
|
|
64
|
+
function onEnd() {
|
|
27
65
|
cleanup();
|
|
28
66
|
resolve(data);
|
|
29
|
-
}
|
|
30
|
-
|
|
67
|
+
}
|
|
68
|
+
function onError(err) {
|
|
31
69
|
cleanup();
|
|
32
70
|
reject(err);
|
|
33
|
-
}
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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,
|
|
1
|
+
{"version":3,"file":"readStdin.js","sourceRoot":"","sources":["../../../src/utils/readStdin.ts"],"names":[],"mappings":"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"}
|
|
@@ -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>;
|
|
@@ -96,7 +96,7 @@ function ports() {
|
|
|
96
96
|
.filter((p) => p.trim())
|
|
97
97
|
.map((p) => p.trim());
|
|
98
98
|
}
|
|
99
|
-
function entrypoint(workdir) {
|
|
99
|
+
function entrypoint(workdir, cliArgs) {
|
|
100
100
|
const isWindows = os.platform() === 'win32';
|
|
101
101
|
const containerWorkdir = getContainerPath(workdir);
|
|
102
102
|
const shellCmds = [];
|
|
@@ -132,7 +132,7 @@ function entrypoint(workdir) {
|
|
|
132
132
|
shellCmds.push(`source ${getContainerPath(projectSandboxBashrc)};`);
|
|
133
133
|
}
|
|
134
134
|
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
|
|
135
|
+
const quotedCliArgs = cliArgs.slice(2).map((arg) => quote([arg]));
|
|
136
136
|
const cliCmd = process.env['NODE_ENV'] === 'development'
|
|
137
137
|
? process.env['DEBUG']
|
|
138
138
|
? 'npm run debug --'
|
|
@@ -140,10 +140,10 @@ function entrypoint(workdir) {
|
|
|
140
140
|
: process.env['DEBUG']
|
|
141
141
|
? `node --inspect-brk=0.0.0.0:${process.env['DEBUG_PORT'] || '9229'} $(which gemini)`
|
|
142
142
|
: 'gemini';
|
|
143
|
-
const args = [...shellCmds, cliCmd, ...
|
|
143
|
+
const args = [...shellCmds, cliCmd, ...quotedCliArgs];
|
|
144
144
|
return ['bash', '-c', args.join(' ')];
|
|
145
145
|
}
|
|
146
|
-
export async function start_sandbox(config, nodeArgs = [], cliConfig) {
|
|
146
|
+
export async function start_sandbox(config, nodeArgs = [], cliConfig, cliArgs = []) {
|
|
147
147
|
const patcher = new ConsolePatcher({
|
|
148
148
|
debugMode: cliConfig?.getDebugMode() || !!process.env['DEBUG'],
|
|
149
149
|
stderr: true,
|
|
@@ -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
|
-
...
|
|
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';
|