@google/gemini-cli-core 0.10.0-nightly.20251014.49b66733 → 0.10.0-nightly.20251015.996c9f59
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/dist/google-gemini-cli-core-0.10.0-nightly.20251007.c195a9aa.tgz +0 -0
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -1
- package/dist/index.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/services/shellExecutionService.js +9 -9
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +11 -16
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/tools/shell.js +10 -8
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/shell.test.js +7 -24
- package/dist/src/tools/shell.test.js.map +1 -1
- package/dist/src/tools/web-fetch.d.ts +7 -0
- package/dist/src/tools/web-fetch.js +39 -10
- package/dist/src/tools/web-fetch.js.map +1 -1
- package/dist/src/tools/web-fetch.test.js +83 -8
- package/dist/src/tools/web-fetch.test.js.map +1 -1
- package/dist/src/utils/errorParsing.d.ts +1 -1
- package/dist/src/utils/errorParsing.js +33 -5
- package/dist/src/utils/errorParsing.js.map +1 -1
- package/dist/src/utils/errorParsing.test.js +88 -0
- package/dist/src/utils/errorParsing.test.js.map +1 -1
- package/dist/src/utils/flashFallback.test.js +45 -26
- package/dist/src/utils/flashFallback.test.js.map +1 -1
- package/dist/src/utils/quotaErrorDetection.d.ts +2 -0
- package/dist/src/utils/quotaErrorDetection.js +46 -0
- package/dist/src/utils/quotaErrorDetection.js.map +1 -1
- package/dist/src/utils/retry.js +146 -29
- package/dist/src/utils/retry.js.map +1 -1
- package/dist/src/utils/retry.test.js +110 -31
- package/dist/src/utils/retry.test.js.map +1 -1
- package/dist/src/utils/shell-utils.d.ts +2 -2
- package/dist/src/utils/shell-utils.js +136 -275
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.test.js +60 -126
- package/dist/src/utils/shell-utils.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -5
- package/dist/src/utils/googleErrors.d.ts +0 -104
- package/dist/src/utils/googleErrors.js +0 -108
- package/dist/src/utils/googleErrors.js.map +0 -1
- package/dist/src/utils/googleErrors.test.d.ts +0 -6
- package/dist/src/utils/googleErrors.test.js +0 -212
- package/dist/src/utils/googleErrors.test.js.map +0 -1
- package/dist/src/utils/googleQuotaErrors.d.ts +0 -35
- package/dist/src/utils/googleQuotaErrors.js +0 -108
- package/dist/src/utils/googleQuotaErrors.js.map +0 -1
- package/dist/src/utils/googleQuotaErrors.test.d.ts +0 -6
- package/dist/src/utils/googleQuotaErrors.test.js +0 -189
- package/dist/src/utils/googleQuotaErrors.test.js.map +0 -1
|
@@ -3,251 +3,11 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
import { createRequire as createModuleRequire } from 'node:module';
|
|
7
6
|
import os from 'node:os';
|
|
8
7
|
import { quote } from 'shell-quote';
|
|
9
8
|
import { doesToolInvocationMatch } from './tool-utils.js';
|
|
10
|
-
import { spawn
|
|
11
|
-
import { Language, Parser } from 'web-tree-sitter';
|
|
9
|
+
import { spawn } from 'node:child_process';
|
|
12
10
|
export const SHELL_TOOL_NAMES = ['run_shell_command', 'ShellTool'];
|
|
13
|
-
const requireModule = createModuleRequire(import.meta.url);
|
|
14
|
-
let bashLanguage = null;
|
|
15
|
-
let treeSitterInitialization = null;
|
|
16
|
-
async function loadBashLanguage() {
|
|
17
|
-
try {
|
|
18
|
-
const treeSitterWasmPath = requireModule.resolve('web-tree-sitter/tree-sitter.wasm');
|
|
19
|
-
const bashWasmPath = requireModule.resolve('tree-sitter-bash/tree-sitter-bash.wasm');
|
|
20
|
-
await Parser.init({
|
|
21
|
-
locateFile() {
|
|
22
|
-
return treeSitterWasmPath;
|
|
23
|
-
},
|
|
24
|
-
});
|
|
25
|
-
bashLanguage = await Language.load(bashWasmPath);
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
bashLanguage = null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export async function initializeShellParsers() {
|
|
32
|
-
if (!treeSitterInitialization) {
|
|
33
|
-
treeSitterInitialization = loadBashLanguage().catch(() => {
|
|
34
|
-
// Swallow errors; bashLanguage will remain null.
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
await treeSitterInitialization;
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
// Initialization errors are non-fatal; parsing will gracefully fall back.
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const POWERSHELL_COMMAND_ENV = '__GCLI_POWERSHELL_COMMAND__';
|
|
45
|
-
// Encode the parser script as UTF-16LE base64 so we can pass it via PowerShell's -EncodedCommand flag;
|
|
46
|
-
// this avoids brittle quoting/escaping when spawning PowerShell and ensures the script is received byte-for-byte.
|
|
47
|
-
const POWERSHELL_PARSER_SCRIPT = Buffer.from(`
|
|
48
|
-
$ErrorActionPreference = 'Stop'
|
|
49
|
-
$commandText = $env:${POWERSHELL_COMMAND_ENV}
|
|
50
|
-
if ([string]::IsNullOrEmpty($commandText)) {
|
|
51
|
-
Write-Output '{"success":false}'
|
|
52
|
-
exit 0
|
|
53
|
-
}
|
|
54
|
-
$tokens = $null
|
|
55
|
-
$errors = $null
|
|
56
|
-
$ast = [System.Management.Automation.Language.Parser]::ParseInput($commandText, [ref]$tokens, [ref]$errors)
|
|
57
|
-
if ($errors -and $errors.Count -gt 0) {
|
|
58
|
-
Write-Output '{"success":false}'
|
|
59
|
-
exit 0
|
|
60
|
-
}
|
|
61
|
-
$commandAsts = $ast.FindAll({ param($node) $node -is [System.Management.Automation.Language.CommandAst] }, $true)
|
|
62
|
-
$commandObjects = @()
|
|
63
|
-
foreach ($commandAst in $commandAsts) {
|
|
64
|
-
$name = $commandAst.GetCommandName()
|
|
65
|
-
if ([string]::IsNullOrWhiteSpace($name)) {
|
|
66
|
-
continue
|
|
67
|
-
}
|
|
68
|
-
$commandObjects += [PSCustomObject]@{
|
|
69
|
-
name = $name
|
|
70
|
-
text = $commandAst.Extent.Text.Trim()
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
[PSCustomObject]@{
|
|
74
|
-
success = $true
|
|
75
|
-
commands = $commandObjects
|
|
76
|
-
} | ConvertTo-Json -Compress
|
|
77
|
-
`, 'utf16le').toString('base64');
|
|
78
|
-
function createParser() {
|
|
79
|
-
if (!bashLanguage) {
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
try {
|
|
83
|
-
const parser = new Parser();
|
|
84
|
-
parser.setLanguage(bashLanguage);
|
|
85
|
-
return parser;
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function parseCommandTree(command) {
|
|
92
|
-
const parser = createParser();
|
|
93
|
-
if (!parser || !command.trim()) {
|
|
94
|
-
return null;
|
|
95
|
-
}
|
|
96
|
-
try {
|
|
97
|
-
return parser.parse(command);
|
|
98
|
-
}
|
|
99
|
-
catch {
|
|
100
|
-
return null;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
function normalizeCommandName(raw) {
|
|
104
|
-
if (raw.length >= 2) {
|
|
105
|
-
const first = raw[0];
|
|
106
|
-
const last = raw[raw.length - 1];
|
|
107
|
-
if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
|
|
108
|
-
return raw.slice(1, -1);
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
const trimmed = raw.trim();
|
|
112
|
-
if (!trimmed) {
|
|
113
|
-
return trimmed;
|
|
114
|
-
}
|
|
115
|
-
return trimmed.split(/[\\/]/).pop() ?? trimmed;
|
|
116
|
-
}
|
|
117
|
-
function extractNameFromNode(node) {
|
|
118
|
-
switch (node.type) {
|
|
119
|
-
case 'command': {
|
|
120
|
-
const nameNode = node.childForFieldName('name');
|
|
121
|
-
if (!nameNode) {
|
|
122
|
-
return null;
|
|
123
|
-
}
|
|
124
|
-
return normalizeCommandName(nameNode.text);
|
|
125
|
-
}
|
|
126
|
-
case 'declaration_command':
|
|
127
|
-
case 'unset_command':
|
|
128
|
-
case 'test_command': {
|
|
129
|
-
const firstChild = node.child(0);
|
|
130
|
-
if (!firstChild) {
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
return normalizeCommandName(firstChild.text);
|
|
134
|
-
}
|
|
135
|
-
default:
|
|
136
|
-
return null;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
function collectCommandDetails(root, source) {
|
|
140
|
-
const stack = [root];
|
|
141
|
-
const details = [];
|
|
142
|
-
while (stack.length > 0) {
|
|
143
|
-
const current = stack.pop();
|
|
144
|
-
if (!current) {
|
|
145
|
-
continue;
|
|
146
|
-
}
|
|
147
|
-
const commandName = extractNameFromNode(current);
|
|
148
|
-
if (commandName) {
|
|
149
|
-
details.push({
|
|
150
|
-
name: commandName,
|
|
151
|
-
text: source.slice(current.startIndex, current.endIndex).trim(),
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
for (let i = current.namedChildCount - 1; i >= 0; i -= 1) {
|
|
155
|
-
const child = current.namedChild(i);
|
|
156
|
-
if (child) {
|
|
157
|
-
stack.push(child);
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return details;
|
|
162
|
-
}
|
|
163
|
-
function parseBashCommandDetails(command) {
|
|
164
|
-
if (!bashLanguage) {
|
|
165
|
-
void initializeShellParsers();
|
|
166
|
-
}
|
|
167
|
-
const tree = parseCommandTree(command);
|
|
168
|
-
if (!tree) {
|
|
169
|
-
return null;
|
|
170
|
-
}
|
|
171
|
-
const details = collectCommandDetails(tree.rootNode, command);
|
|
172
|
-
return {
|
|
173
|
-
details,
|
|
174
|
-
hasError: tree.rootNode.hasError || details.length === 0,
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
function parsePowerShellCommandDetails(command, executable) {
|
|
178
|
-
const trimmed = command.trim();
|
|
179
|
-
if (!trimmed) {
|
|
180
|
-
return {
|
|
181
|
-
details: [],
|
|
182
|
-
hasError: true,
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
try {
|
|
186
|
-
const result = spawnSync(executable, [
|
|
187
|
-
'-NoLogo',
|
|
188
|
-
'-NoProfile',
|
|
189
|
-
'-NonInteractive',
|
|
190
|
-
'-EncodedCommand',
|
|
191
|
-
POWERSHELL_PARSER_SCRIPT,
|
|
192
|
-
], {
|
|
193
|
-
env: {
|
|
194
|
-
...process.env,
|
|
195
|
-
[POWERSHELL_COMMAND_ENV]: command,
|
|
196
|
-
},
|
|
197
|
-
encoding: 'utf-8',
|
|
198
|
-
maxBuffer: 1024 * 1024,
|
|
199
|
-
});
|
|
200
|
-
if (result.error || result.status !== 0) {
|
|
201
|
-
return null;
|
|
202
|
-
}
|
|
203
|
-
const output = (result.stdout ?? '').toString().trim();
|
|
204
|
-
if (!output) {
|
|
205
|
-
return { details: [], hasError: true };
|
|
206
|
-
}
|
|
207
|
-
let parsed = null;
|
|
208
|
-
try {
|
|
209
|
-
parsed = JSON.parse(output);
|
|
210
|
-
}
|
|
211
|
-
catch {
|
|
212
|
-
return { details: [], hasError: true };
|
|
213
|
-
}
|
|
214
|
-
if (!parsed?.success) {
|
|
215
|
-
return { details: [], hasError: true };
|
|
216
|
-
}
|
|
217
|
-
const details = (parsed.commands ?? [])
|
|
218
|
-
.map((commandDetail) => {
|
|
219
|
-
if (!commandDetail || typeof commandDetail.name !== 'string') {
|
|
220
|
-
return null;
|
|
221
|
-
}
|
|
222
|
-
const name = normalizeCommandName(commandDetail.name);
|
|
223
|
-
const text = typeof commandDetail.text === 'string'
|
|
224
|
-
? commandDetail.text.trim()
|
|
225
|
-
: command;
|
|
226
|
-
return {
|
|
227
|
-
name,
|
|
228
|
-
text,
|
|
229
|
-
};
|
|
230
|
-
})
|
|
231
|
-
.filter((detail) => detail !== null);
|
|
232
|
-
return {
|
|
233
|
-
details,
|
|
234
|
-
hasError: details.length === 0,
|
|
235
|
-
};
|
|
236
|
-
}
|
|
237
|
-
catch {
|
|
238
|
-
return null;
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
function parseCommandDetails(command) {
|
|
242
|
-
const configuration = getShellConfiguration();
|
|
243
|
-
if (configuration.shell === 'powershell') {
|
|
244
|
-
return parsePowerShellCommandDetails(command, configuration.executable);
|
|
245
|
-
}
|
|
246
|
-
if (configuration.shell === 'bash') {
|
|
247
|
-
return parseBashCommandDetails(command);
|
|
248
|
-
}
|
|
249
|
-
return null;
|
|
250
|
-
}
|
|
251
11
|
/**
|
|
252
12
|
* Determines the appropriate shell configuration for the current platform.
|
|
253
13
|
*
|
|
@@ -258,23 +18,28 @@ function parseCommandDetails(command) {
|
|
|
258
18
|
*/
|
|
259
19
|
export function getShellConfiguration() {
|
|
260
20
|
if (isWindows()) {
|
|
261
|
-
const comSpec = process.env['ComSpec'];
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
21
|
+
const comSpec = process.env['ComSpec'] || 'cmd.exe';
|
|
22
|
+
const executable = comSpec.toLowerCase();
|
|
23
|
+
if (executable.endsWith('powershell.exe') ||
|
|
24
|
+
executable.endsWith('pwsh.exe')) {
|
|
25
|
+
// For PowerShell, the arguments are different.
|
|
26
|
+
// -NoProfile: Speeds up startup.
|
|
27
|
+
// -Command: Executes the following command.
|
|
28
|
+
return {
|
|
29
|
+
executable: comSpec,
|
|
30
|
+
argsPrefix: ['-NoProfile', '-Command'],
|
|
31
|
+
shell: 'powershell',
|
|
32
|
+
};
|
|
272
33
|
}
|
|
273
|
-
// Default to
|
|
34
|
+
// Default to cmd.exe for anything else on Windows.
|
|
35
|
+
// Flags for CMD:
|
|
36
|
+
// /d: Skip execution of AutoRun commands.
|
|
37
|
+
// /s: Modifies the treatment of the command string (important for quoting).
|
|
38
|
+
// /c: Carries out the command specified by the string and then terminates.
|
|
274
39
|
return {
|
|
275
|
-
executable:
|
|
276
|
-
argsPrefix: ['
|
|
277
|
-
shell: '
|
|
40
|
+
executable: comSpec,
|
|
41
|
+
argsPrefix: ['/d', '/s', '/c'],
|
|
42
|
+
shell: 'cmd',
|
|
278
43
|
};
|
|
279
44
|
}
|
|
280
45
|
// Unix-like systems (Linux, macOS)
|
|
@@ -316,11 +81,49 @@ export function escapeShellArg(arg, shell) {
|
|
|
316
81
|
* @returns An array of individual command strings
|
|
317
82
|
*/
|
|
318
83
|
export function splitCommands(command) {
|
|
319
|
-
const
|
|
320
|
-
|
|
321
|
-
|
|
84
|
+
const commands = [];
|
|
85
|
+
let currentCommand = '';
|
|
86
|
+
let inSingleQuotes = false;
|
|
87
|
+
let inDoubleQuotes = false;
|
|
88
|
+
let i = 0;
|
|
89
|
+
while (i < command.length) {
|
|
90
|
+
const char = command[i];
|
|
91
|
+
const nextChar = command[i + 1];
|
|
92
|
+
if (char === '\\' && i < command.length - 1) {
|
|
93
|
+
currentCommand += char + command[i + 1];
|
|
94
|
+
i += 2;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
if (char === "'" && !inDoubleQuotes) {
|
|
98
|
+
inSingleQuotes = !inSingleQuotes;
|
|
99
|
+
}
|
|
100
|
+
else if (char === '"' && !inSingleQuotes) {
|
|
101
|
+
inDoubleQuotes = !inDoubleQuotes;
|
|
102
|
+
}
|
|
103
|
+
if (!inSingleQuotes && !inDoubleQuotes) {
|
|
104
|
+
if ((char === '&' && nextChar === '&') ||
|
|
105
|
+
(char === '|' && nextChar === '|')) {
|
|
106
|
+
commands.push(currentCommand.trim());
|
|
107
|
+
currentCommand = '';
|
|
108
|
+
i++; // Skip the next character
|
|
109
|
+
}
|
|
110
|
+
else if (char === ';' || char === '&' || char === '|') {
|
|
111
|
+
commands.push(currentCommand.trim());
|
|
112
|
+
currentCommand = '';
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
currentCommand += char;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
currentCommand += char;
|
|
120
|
+
}
|
|
121
|
+
i++;
|
|
122
|
+
}
|
|
123
|
+
if (currentCommand.trim()) {
|
|
124
|
+
commands.push(currentCommand.trim());
|
|
322
125
|
}
|
|
323
|
-
return
|
|
126
|
+
return commands.filter(Boolean); // Filter out any empty strings
|
|
324
127
|
}
|
|
325
128
|
/**
|
|
326
129
|
* Extracts the root command from a given shell command string.
|
|
@@ -331,24 +134,36 @@ export function splitCommands(command) {
|
|
|
331
134
|
* @example getCommandRoot("git status && npm test") returns "git"
|
|
332
135
|
*/
|
|
333
136
|
export function getCommandRoot(command) {
|
|
334
|
-
const
|
|
335
|
-
if (!
|
|
137
|
+
const trimmedCommand = command.trim();
|
|
138
|
+
if (!trimmedCommand) {
|
|
336
139
|
return undefined;
|
|
337
140
|
}
|
|
338
|
-
|
|
141
|
+
// This regex is designed to find the first "word" of a command,
|
|
142
|
+
// while respecting quotes. It looks for a sequence of non-whitespace
|
|
143
|
+
// characters that are not inside quotes.
|
|
144
|
+
const match = trimmedCommand.match(/^"([^"]+)"|^'([^']+)'|^(\S+)/);
|
|
145
|
+
if (match) {
|
|
146
|
+
// The first element in the match array is the full match.
|
|
147
|
+
// The subsequent elements are the capture groups.
|
|
148
|
+
// We prefer a captured group because it will be unquoted.
|
|
149
|
+
const commandRoot = match[1] || match[2] || match[3];
|
|
150
|
+
if (commandRoot) {
|
|
151
|
+
// If the command is a path, return the last component.
|
|
152
|
+
return commandRoot.split(/[\\/]/).pop();
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return undefined;
|
|
339
156
|
}
|
|
340
157
|
export function getCommandRoots(command) {
|
|
341
158
|
if (!command) {
|
|
342
159
|
return [];
|
|
343
160
|
}
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
}
|
|
348
|
-
return parsed.details.map((detail) => detail.name).filter(Boolean);
|
|
161
|
+
return splitCommands(command)
|
|
162
|
+
.map((c) => getCommandRoot(c))
|
|
163
|
+
.filter((c) => !!c);
|
|
349
164
|
}
|
|
350
165
|
export function stripShellWrapper(command) {
|
|
351
|
-
const pattern = /^\s*(?:
|
|
166
|
+
const pattern = /^\s*(?:sh|bash|zsh|cmd.exe)\s+(?:\/c|-c)\s+/;
|
|
352
167
|
const match = command.match(pattern);
|
|
353
168
|
if (match) {
|
|
354
169
|
let newCommand = command.substring(match[0].length).trim();
|
|
@@ -368,6 +183,54 @@ export function stripShellWrapper(command) {
|
|
|
368
183
|
* @param command The shell command string to check
|
|
369
184
|
* @returns true if command substitution would be executed by bash
|
|
370
185
|
*/
|
|
186
|
+
export function detectCommandSubstitution(command) {
|
|
187
|
+
let inSingleQuotes = false;
|
|
188
|
+
let inDoubleQuotes = false;
|
|
189
|
+
let inBackticks = false;
|
|
190
|
+
let i = 0;
|
|
191
|
+
while (i < command.length) {
|
|
192
|
+
const char = command[i];
|
|
193
|
+
const nextChar = command[i + 1];
|
|
194
|
+
// Handle escaping - only works outside single quotes
|
|
195
|
+
if (char === '\\' && !inSingleQuotes) {
|
|
196
|
+
i += 2; // Skip the escaped character
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
// Handle quote state changes
|
|
200
|
+
if (char === "'" && !inDoubleQuotes && !inBackticks) {
|
|
201
|
+
inSingleQuotes = !inSingleQuotes;
|
|
202
|
+
}
|
|
203
|
+
else if (char === '"' && !inSingleQuotes && !inBackticks) {
|
|
204
|
+
inDoubleQuotes = !inDoubleQuotes;
|
|
205
|
+
}
|
|
206
|
+
else if (char === '`' && !inSingleQuotes) {
|
|
207
|
+
// Backticks work outside single quotes (including in double quotes)
|
|
208
|
+
inBackticks = !inBackticks;
|
|
209
|
+
}
|
|
210
|
+
// Check for command substitution patterns that would be executed
|
|
211
|
+
if (!inSingleQuotes) {
|
|
212
|
+
// $(...) command substitution - works in double quotes and unquoted
|
|
213
|
+
if (char === '$' && nextChar === '(') {
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
// <(...) process substitution - works unquoted only (not in double quotes)
|
|
217
|
+
if (char === '<' && nextChar === '(' && !inDoubleQuotes && !inBackticks) {
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
// >(...) process substitution - works unquoted only (not in double quotes)
|
|
221
|
+
if (char === '>' && nextChar === '(' && !inDoubleQuotes && !inBackticks) {
|
|
222
|
+
return true;
|
|
223
|
+
}
|
|
224
|
+
// Backtick command substitution - check for opening backtick
|
|
225
|
+
// (We track the state above, so this catches the start of backtick substitution)
|
|
226
|
+
if (char === '`' && !inBackticks) {
|
|
227
|
+
return true;
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
i++;
|
|
231
|
+
}
|
|
232
|
+
return false;
|
|
233
|
+
}
|
|
371
234
|
/**
|
|
372
235
|
* Checks a shell command against security policies and allowlists.
|
|
373
236
|
*
|
|
@@ -393,19 +256,17 @@ export function stripShellWrapper(command) {
|
|
|
393
256
|
* @returns An object detailing which commands are not allowed.
|
|
394
257
|
*/
|
|
395
258
|
export function checkCommandPermissions(command, config, sessionAllowlist) {
|
|
396
|
-
|
|
397
|
-
if (
|
|
259
|
+
// Disallow command substitution for security.
|
|
260
|
+
if (detectCommandSubstitution(command)) {
|
|
398
261
|
return {
|
|
399
262
|
allAllowed: false,
|
|
400
263
|
disallowedCommands: [command],
|
|
401
|
-
blockReason: 'Command
|
|
264
|
+
blockReason: 'Command substitution using $(), `` ` ``, <(), or >() is not allowed for security reasons',
|
|
402
265
|
isHardDenial: true,
|
|
403
266
|
};
|
|
404
267
|
}
|
|
405
268
|
const normalize = (cmd) => cmd.trim().replace(/\s+/g, ' ');
|
|
406
|
-
const commandsToValidate =
|
|
407
|
-
.map((detail) => normalize(detail.text))
|
|
408
|
-
.filter(Boolean);
|
|
269
|
+
const commandsToValidate = splitCommands(command).map(normalize);
|
|
409
270
|
const invocation = {
|
|
410
271
|
params: { command: '' },
|
|
411
272
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-utils.js","sourceRoot":"","sources":["../../../src/utils/shell-utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shell-utils.js","sourceRoot":"","sources":["../../../src/utils/shell-utils.ts"],"names":[],"mappings":"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"}
|