@google/gemini-cli-core 0.10.0-preview.3 → 0.11.0-nightly.20251020.a96f0659

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 (175) hide show
  1. package/README.md +9 -0
  2. package/dist/google-gemini-cli-core-0.11.0-nightly.20251015.203bad7c.tgz +0 -0
  3. package/dist/src/agents/codebase-investigator.js +2 -5
  4. package/dist/src/agents/codebase-investigator.js.map +1 -1
  5. package/dist/src/agents/executor.js +6 -13
  6. package/dist/src/agents/executor.js.map +1 -1
  7. package/dist/src/agents/executor.test.js +36 -31
  8. package/dist/src/agents/executor.test.js.map +1 -1
  9. package/dist/src/config/config.d.ts +1 -3
  10. package/dist/src/config/config.js +0 -5
  11. package/dist/src/config/config.js.map +1 -1
  12. package/dist/src/config/config.test.js +0 -4
  13. package/dist/src/config/config.test.js.map +1 -1
  14. package/dist/src/confirmation-bus/types.d.ts +5 -0
  15. package/dist/src/core/client.test.js +0 -1
  16. package/dist/src/core/client.test.js.map +1 -1
  17. package/dist/src/core/coreToolScheduler.d.ts +6 -0
  18. package/dist/src/core/coreToolScheduler.js +30 -6
  19. package/dist/src/core/coreToolScheduler.js.map +1 -1
  20. package/dist/src/core/coreToolScheduler.test.js +37 -3
  21. package/dist/src/core/coreToolScheduler.test.js.map +1 -1
  22. package/dist/src/core/geminiChat.js +1 -0
  23. package/dist/src/core/geminiChat.js.map +1 -1
  24. package/dist/src/core/nonInteractiveToolExecutor.test.js +3 -0
  25. package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
  26. package/dist/src/core/prompts.js +13 -20
  27. package/dist/src/core/prompts.js.map +1 -1
  28. package/dist/src/generated/git-commit.d.ts +2 -2
  29. package/dist/src/generated/git-commit.js +2 -2
  30. package/dist/src/generated/git-commit.js.map +1 -1
  31. package/dist/src/index.d.ts +2 -0
  32. package/dist/src/index.js +2 -0
  33. package/dist/src/index.js.map +1 -1
  34. package/dist/src/output/stream-json-formatter.d.ts +32 -0
  35. package/dist/src/output/stream-json-formatter.js +52 -0
  36. package/dist/src/output/stream-json-formatter.js.map +1 -0
  37. package/dist/src/output/stream-json-formatter.test.js +479 -0
  38. package/dist/src/output/stream-json-formatter.test.js.map +1 -0
  39. package/dist/src/output/types.d.ts +63 -1
  40. package/dist/src/output/types.js +11 -0
  41. package/dist/src/output/types.js.map +1 -1
  42. package/dist/src/services/shellExecutionService.js +9 -9
  43. package/dist/src/services/shellExecutionService.js.map +1 -1
  44. package/dist/src/services/shellExecutionService.test.js +16 -11
  45. package/dist/src/services/shellExecutionService.test.js.map +1 -1
  46. package/dist/src/telemetry/activity-monitor.d.ts +116 -0
  47. package/dist/src/telemetry/activity-monitor.js +208 -0
  48. package/dist/src/telemetry/activity-monitor.js.map +1 -0
  49. package/dist/src/telemetry/activity-monitor.test.d.ts +6 -0
  50. package/dist/src/telemetry/activity-monitor.test.js +248 -0
  51. package/dist/src/telemetry/activity-monitor.test.js.map +1 -0
  52. package/dist/src/telemetry/clearcut-logger/clearcut-logger.d.ts +1 -0
  53. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js +7 -7
  54. package/dist/src/telemetry/clearcut-logger/clearcut-logger.js.map +1 -1
  55. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js +3 -10
  56. package/dist/src/telemetry/clearcut-logger/clearcut-logger.test.js.map +1 -1
  57. package/dist/src/telemetry/index.d.ts +2 -1
  58. package/dist/src/telemetry/index.js +2 -1
  59. package/dist/src/telemetry/index.js.map +1 -1
  60. package/dist/src/telemetry/loggers.test.js +0 -1
  61. package/dist/src/telemetry/loggers.test.js.map +1 -1
  62. package/dist/src/tools/edit.d.ts +0 -1
  63. package/dist/src/tools/edit.js +4 -5
  64. package/dist/src/tools/edit.js.map +1 -1
  65. package/dist/src/tools/edit.test.js +0 -1
  66. package/dist/src/tools/edit.test.js.map +1 -1
  67. package/dist/src/tools/glob.d.ts +0 -1
  68. package/dist/src/tools/glob.js +1 -2
  69. package/dist/src/tools/glob.js.map +1 -1
  70. package/dist/src/tools/grep.d.ts +0 -1
  71. package/dist/src/tools/grep.js +10 -5
  72. package/dist/src/tools/grep.js.map +1 -1
  73. package/dist/src/tools/ls.d.ts +0 -1
  74. package/dist/src/tools/ls.js +2 -2
  75. package/dist/src/tools/ls.js.map +1 -1
  76. package/dist/src/tools/memoryTool.d.ts +0 -1
  77. package/dist/src/tools/memoryTool.js +3 -3
  78. package/dist/src/tools/memoryTool.js.map +1 -1
  79. package/dist/src/tools/message-bus-integration.test.js +14 -1
  80. package/dist/src/tools/message-bus-integration.test.js.map +1 -1
  81. package/dist/src/tools/read-file.d.ts +0 -1
  82. package/dist/src/tools/read-file.js +3 -3
  83. package/dist/src/tools/read-file.js.map +1 -1
  84. package/dist/src/tools/read-many-files.d.ts +0 -1
  85. package/dist/src/tools/read-many-files.js +3 -3
  86. package/dist/src/tools/read-many-files.js.map +1 -1
  87. package/dist/src/tools/ripGrep.d.ts +0 -1
  88. package/dist/src/tools/ripGrep.js +2 -2
  89. package/dist/src/tools/ripGrep.js.map +1 -1
  90. package/dist/src/tools/shell.d.ts +0 -1
  91. package/dist/src/tools/shell.js +21 -58
  92. package/dist/src/tools/shell.js.map +1 -1
  93. package/dist/src/tools/shell.test.js +61 -8
  94. package/dist/src/tools/shell.test.js.map +1 -1
  95. package/dist/src/tools/smart-edit.d.ts +0 -1
  96. package/dist/src/tools/smart-edit.js +3 -4
  97. package/dist/src/tools/smart-edit.js.map +1 -1
  98. package/dist/src/tools/smart-edit.test.js +0 -1
  99. package/dist/src/tools/smart-edit.test.js.map +1 -1
  100. package/dist/src/tools/tool-names.d.ts +8 -0
  101. package/dist/src/tools/tool-names.js +8 -5
  102. package/dist/src/tools/tool-names.js.map +1 -1
  103. package/dist/src/tools/tools.d.ts +10 -6
  104. package/dist/src/tools/tools.js +19 -33
  105. package/dist/src/tools/tools.js.map +1 -1
  106. package/dist/src/tools/web-fetch.d.ts +3 -3
  107. package/dist/src/tools/web-fetch.js +43 -18
  108. package/dist/src/tools/web-fetch.js.map +1 -1
  109. package/dist/src/tools/web-fetch.test.js +261 -0
  110. package/dist/src/tools/web-fetch.test.js.map +1 -1
  111. package/dist/src/tools/web-search.d.ts +0 -1
  112. package/dist/src/tools/web-search.js +1 -2
  113. package/dist/src/tools/web-search.js.map +1 -1
  114. package/dist/src/tools/write-file.d.ts +0 -1
  115. package/dist/src/tools/write-file.js +2 -3
  116. package/dist/src/tools/write-file.js.map +1 -1
  117. package/dist/src/tools/write-file.test.js +0 -1
  118. package/dist/src/tools/write-file.test.js.map +1 -1
  119. package/dist/src/tools/write-todos.d.ts +1 -7
  120. package/dist/src/tools/write-todos.js +2 -3
  121. package/dist/src/tools/write-todos.js.map +1 -1
  122. package/dist/src/tools/write-todos.test.js +2 -2
  123. package/dist/src/tools/write-todos.test.js.map +1 -1
  124. package/dist/src/utils/debugLogger.d.ts +25 -0
  125. package/dist/src/utils/debugLogger.js +33 -0
  126. package/dist/src/utils/debugLogger.js.map +1 -0
  127. package/dist/src/utils/debugLogger.test.d.ts +6 -0
  128. package/dist/src/utils/debugLogger.test.js +67 -0
  129. package/dist/src/utils/debugLogger.test.js.map +1 -0
  130. package/dist/src/utils/delay.d.ts +16 -0
  131. package/dist/src/utils/delay.js +43 -0
  132. package/dist/src/utils/delay.js.map +1 -0
  133. package/dist/src/utils/delay.test.d.ts +6 -0
  134. package/dist/src/utils/delay.test.js +88 -0
  135. package/dist/src/utils/delay.test.js.map +1 -0
  136. package/dist/src/utils/editCorrector.js +5 -9
  137. package/dist/src/utils/editCorrector.js.map +1 -1
  138. package/dist/src/utils/editCorrector.test.js +3 -5
  139. package/dist/src/utils/editCorrector.test.js.map +1 -1
  140. package/dist/src/utils/environmentContext.js +0 -33
  141. package/dist/src/utils/environmentContext.js.map +1 -1
  142. package/dist/src/utils/environmentContext.test.js +0 -34
  143. package/dist/src/utils/environmentContext.test.js.map +1 -1
  144. package/dist/src/utils/fileUtils.d.ts +4 -0
  145. package/dist/src/utils/fileUtils.js +31 -0
  146. package/dist/src/utils/fileUtils.js.map +1 -1
  147. package/dist/src/utils/gitIgnoreParser.js +6 -5
  148. package/dist/src/utils/gitIgnoreParser.js.map +1 -1
  149. package/dist/src/utils/gitIgnoreParser.test.js +14 -0
  150. package/dist/src/utils/gitIgnoreParser.test.js.map +1 -1
  151. package/dist/src/utils/retry.d.ts +1 -0
  152. package/dist/src/utils/retry.js +14 -12
  153. package/dist/src/utils/retry.js.map +1 -1
  154. package/dist/src/utils/retry.test.js +17 -0
  155. package/dist/src/utils/retry.test.js.map +1 -1
  156. package/dist/src/utils/safeJsonStringify.d.ts +4 -4
  157. package/dist/src/utils/safeJsonStringify.js +31 -7
  158. package/dist/src/utils/safeJsonStringify.js.map +1 -1
  159. package/dist/src/utils/shell-utils.d.ts +2 -2
  160. package/dist/src/utils/shell-utils.js +307 -136
  161. package/dist/src/utils/shell-utils.js.map +1 -1
  162. package/dist/src/utils/shell-utils.test.js +126 -60
  163. package/dist/src/utils/shell-utils.test.js.map +1 -1
  164. package/dist/src/utils/tool-utils.d.ts +2 -2
  165. package/dist/src/utils/tool-utils.js +14 -5
  166. package/dist/src/utils/tool-utils.js.map +1 -1
  167. package/dist/tsconfig.tsbuildinfo +1 -1
  168. package/package.json +5 -3
  169. package/dist/google-gemini-cli-core-0.10.0-preview.2.tgz +0 -0
  170. package/dist/src/core/subagent.d.ts +0 -236
  171. package/dist/src/core/subagent.js +0 -482
  172. package/dist/src/core/subagent.js.map +0 -1
  173. package/dist/src/core/subagent.test.js +0 -556
  174. package/dist/src/core/subagent.test.js.map +0 -1
  175. /package/dist/src/{core/subagent.test.d.ts → output/stream-json-formatter.test.d.ts} +0 -0
@@ -6,8 +6,280 @@
6
6
  import os from 'node:os';
7
7
  import { quote } from 'shell-quote';
8
8
  import { doesToolInvocationMatch } from './tool-utils.js';
9
- import { spawn } from 'node:child_process';
9
+ import { spawn, spawnSync, } from 'node:child_process';
10
+ import { Language, Parser } from 'web-tree-sitter';
11
+ import { loadWasmBinary } from './fileUtils.js';
10
12
  export const SHELL_TOOL_NAMES = ['run_shell_command', 'ShellTool'];
13
+ let bashLanguage = null;
14
+ let treeSitterInitialization = null;
15
+ let treeSitterInitializationError = null;
16
+ class ShellParserInitializationError extends Error {
17
+ constructor(cause) {
18
+ super(`Failed to initialize bash parser: ${cause.message}`, { cause });
19
+ this.name = 'ShellParserInitializationError';
20
+ }
21
+ }
22
+ function toError(value) {
23
+ if (value instanceof Error) {
24
+ return value;
25
+ }
26
+ if (typeof value === 'string') {
27
+ return new Error(value);
28
+ }
29
+ return new Error('Unknown tree-sitter initialization error', {
30
+ cause: value,
31
+ });
32
+ }
33
+ async function loadBashLanguage() {
34
+ try {
35
+ treeSitterInitializationError = null;
36
+ const [treeSitterBinary, bashBinary] = await Promise.all([
37
+ loadWasmBinary(() =>
38
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
39
+ // @ts-ignore resolved by esbuild-plugin-wasm during bundling
40
+ import('web-tree-sitter/tree-sitter.wasm?binary'), 'web-tree-sitter/tree-sitter.wasm'),
41
+ loadWasmBinary(() =>
42
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
43
+ // @ts-ignore resolved by esbuild-plugin-wasm during bundling
44
+ import('tree-sitter-bash/tree-sitter-bash.wasm?binary'), 'tree-sitter-bash/tree-sitter-bash.wasm'),
45
+ ]);
46
+ await Parser.init({ wasmBinary: treeSitterBinary });
47
+ bashLanguage = await Language.load(bashBinary);
48
+ }
49
+ catch (error) {
50
+ bashLanguage = null;
51
+ const normalized = toError(error);
52
+ const initializationError = normalized instanceof ShellParserInitializationError
53
+ ? normalized
54
+ : new ShellParserInitializationError(normalized);
55
+ treeSitterInitializationError = initializationError;
56
+ throw initializationError;
57
+ }
58
+ }
59
+ export async function initializeShellParsers() {
60
+ if (!treeSitterInitialization) {
61
+ treeSitterInitialization = loadBashLanguage().catch((error) => {
62
+ treeSitterInitialization = null;
63
+ throw error;
64
+ });
65
+ }
66
+ await treeSitterInitialization;
67
+ }
68
+ const POWERSHELL_COMMAND_ENV = '__GCLI_POWERSHELL_COMMAND__';
69
+ // Encode the parser script as UTF-16LE base64 so we can pass it via PowerShell's -EncodedCommand flag;
70
+ // this avoids brittle quoting/escaping when spawning PowerShell and ensures the script is received byte-for-byte.
71
+ const POWERSHELL_PARSER_SCRIPT = Buffer.from(`
72
+ $ErrorActionPreference = 'Stop'
73
+ $commandText = $env:${POWERSHELL_COMMAND_ENV}
74
+ if ([string]::IsNullOrEmpty($commandText)) {
75
+ Write-Output '{"success":false}'
76
+ exit 0
77
+ }
78
+ $tokens = $null
79
+ $errors = $null
80
+ $ast = [System.Management.Automation.Language.Parser]::ParseInput($commandText, [ref]$tokens, [ref]$errors)
81
+ if ($errors -and $errors.Count -gt 0) {
82
+ Write-Output '{"success":false}'
83
+ exit 0
84
+ }
85
+ $commandAsts = $ast.FindAll({ param($node) $node -is [System.Management.Automation.Language.CommandAst] }, $true)
86
+ $commandObjects = @()
87
+ foreach ($commandAst in $commandAsts) {
88
+ $name = $commandAst.GetCommandName()
89
+ if ([string]::IsNullOrWhiteSpace($name)) {
90
+ continue
91
+ }
92
+ $commandObjects += [PSCustomObject]@{
93
+ name = $name
94
+ text = $commandAst.Extent.Text.Trim()
95
+ }
96
+ }
97
+ [PSCustomObject]@{
98
+ success = $true
99
+ commands = $commandObjects
100
+ } | ConvertTo-Json -Compress
101
+ `, 'utf16le').toString('base64');
102
+ function createParser() {
103
+ if (!bashLanguage) {
104
+ if (treeSitterInitializationError) {
105
+ throw treeSitterInitializationError;
106
+ }
107
+ return null;
108
+ }
109
+ try {
110
+ const parser = new Parser();
111
+ parser.setLanguage(bashLanguage);
112
+ return parser;
113
+ }
114
+ catch {
115
+ return null;
116
+ }
117
+ }
118
+ function parseCommandTree(command) {
119
+ const parser = createParser();
120
+ if (!parser || !command.trim()) {
121
+ return null;
122
+ }
123
+ try {
124
+ return parser.parse(command);
125
+ }
126
+ catch {
127
+ return null;
128
+ }
129
+ }
130
+ function normalizeCommandName(raw) {
131
+ if (raw.length >= 2) {
132
+ const first = raw[0];
133
+ const last = raw[raw.length - 1];
134
+ if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
135
+ return raw.slice(1, -1);
136
+ }
137
+ }
138
+ const trimmed = raw.trim();
139
+ if (!trimmed) {
140
+ return trimmed;
141
+ }
142
+ return trimmed.split(/[\\/]/).pop() ?? trimmed;
143
+ }
144
+ function extractNameFromNode(node) {
145
+ switch (node.type) {
146
+ case 'command': {
147
+ const nameNode = node.childForFieldName('name');
148
+ if (!nameNode) {
149
+ return null;
150
+ }
151
+ return normalizeCommandName(nameNode.text);
152
+ }
153
+ case 'declaration_command':
154
+ case 'unset_command':
155
+ case 'test_command': {
156
+ const firstChild = node.child(0);
157
+ if (!firstChild) {
158
+ return null;
159
+ }
160
+ return normalizeCommandName(firstChild.text);
161
+ }
162
+ default:
163
+ return null;
164
+ }
165
+ }
166
+ function collectCommandDetails(root, source) {
167
+ const stack = [root];
168
+ const details = [];
169
+ while (stack.length > 0) {
170
+ const current = stack.pop();
171
+ if (!current) {
172
+ continue;
173
+ }
174
+ const commandName = extractNameFromNode(current);
175
+ if (commandName) {
176
+ details.push({
177
+ name: commandName,
178
+ text: source.slice(current.startIndex, current.endIndex).trim(),
179
+ });
180
+ }
181
+ for (let i = current.namedChildCount - 1; i >= 0; i -= 1) {
182
+ const child = current.namedChild(i);
183
+ if (child) {
184
+ stack.push(child);
185
+ }
186
+ }
187
+ }
188
+ return details;
189
+ }
190
+ function parseBashCommandDetails(command) {
191
+ if (treeSitterInitializationError) {
192
+ throw treeSitterInitializationError;
193
+ }
194
+ if (!bashLanguage) {
195
+ initializeShellParsers().catch(() => {
196
+ // The failure path is surfaced via treeSitterInitializationError.
197
+ });
198
+ return null;
199
+ }
200
+ const tree = parseCommandTree(command);
201
+ if (!tree) {
202
+ return null;
203
+ }
204
+ const details = collectCommandDetails(tree.rootNode, command);
205
+ return {
206
+ details,
207
+ hasError: tree.rootNode.hasError || details.length === 0,
208
+ };
209
+ }
210
+ function parsePowerShellCommandDetails(command, executable) {
211
+ const trimmed = command.trim();
212
+ if (!trimmed) {
213
+ return {
214
+ details: [],
215
+ hasError: true,
216
+ };
217
+ }
218
+ try {
219
+ const result = spawnSync(executable, [
220
+ '-NoLogo',
221
+ '-NoProfile',
222
+ '-NonInteractive',
223
+ '-EncodedCommand',
224
+ POWERSHELL_PARSER_SCRIPT,
225
+ ], {
226
+ env: {
227
+ ...process.env,
228
+ [POWERSHELL_COMMAND_ENV]: command,
229
+ },
230
+ encoding: 'utf-8',
231
+ });
232
+ if (result.error || result.status !== 0) {
233
+ return null;
234
+ }
235
+ const output = (result.stdout ?? '').toString().trim();
236
+ if (!output) {
237
+ return { details: [], hasError: true };
238
+ }
239
+ let parsed = null;
240
+ try {
241
+ parsed = JSON.parse(output);
242
+ }
243
+ catch {
244
+ return { details: [], hasError: true };
245
+ }
246
+ if (!parsed?.success) {
247
+ return { details: [], hasError: true };
248
+ }
249
+ const details = (parsed.commands ?? [])
250
+ .map((commandDetail) => {
251
+ if (!commandDetail || typeof commandDetail.name !== 'string') {
252
+ return null;
253
+ }
254
+ const name = normalizeCommandName(commandDetail.name);
255
+ const text = typeof commandDetail.text === 'string'
256
+ ? commandDetail.text.trim()
257
+ : command;
258
+ return {
259
+ name,
260
+ text,
261
+ };
262
+ })
263
+ .filter((detail) => detail !== null);
264
+ return {
265
+ details,
266
+ hasError: details.length === 0,
267
+ };
268
+ }
269
+ catch {
270
+ return null;
271
+ }
272
+ }
273
+ function parseCommandDetails(command) {
274
+ const configuration = getShellConfiguration();
275
+ if (configuration.shell === 'powershell') {
276
+ return parsePowerShellCommandDetails(command, configuration.executable);
277
+ }
278
+ if (configuration.shell === 'bash') {
279
+ return parseBashCommandDetails(command);
280
+ }
281
+ return null;
282
+ }
11
283
  /**
12
284
  * Determines the appropriate shell configuration for the current platform.
13
285
  *
@@ -18,28 +290,23 @@ export const SHELL_TOOL_NAMES = ['run_shell_command', 'ShellTool'];
18
290
  */
19
291
  export function getShellConfiguration() {
20
292
  if (isWindows()) {
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
- };
293
+ const comSpec = process.env['ComSpec'];
294
+ if (comSpec) {
295
+ const executable = comSpec.toLowerCase();
296
+ if (executable.endsWith('powershell.exe') ||
297
+ executable.endsWith('pwsh.exe')) {
298
+ return {
299
+ executable: comSpec,
300
+ argsPrefix: ['-NoProfile', '-Command'],
301
+ shell: 'powershell',
302
+ };
303
+ }
33
304
  }
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.
305
+ // Default to PowerShell for all other Windows configurations.
39
306
  return {
40
- executable: comSpec,
41
- argsPrefix: ['/d', '/s', '/c'],
42
- shell: 'cmd',
307
+ executable: 'powershell.exe',
308
+ argsPrefix: ['-NoProfile', '-Command'],
309
+ shell: 'powershell',
43
310
  };
44
311
  }
45
312
  // Unix-like systems (Linux, macOS)
@@ -81,49 +348,11 @@ export function escapeShellArg(arg, shell) {
81
348
  * @returns An array of individual command strings
82
349
  */
83
350
  export function splitCommands(command) {
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());
351
+ const parsed = parseCommandDetails(command);
352
+ if (!parsed || parsed.hasError) {
353
+ return [];
125
354
  }
126
- return commands.filter(Boolean); // Filter out any empty strings
355
+ return parsed.details.map((detail) => detail.text).filter(Boolean);
127
356
  }
128
357
  /**
129
358
  * Extracts the root command from a given shell command string.
@@ -134,36 +363,24 @@ export function splitCommands(command) {
134
363
  * @example getCommandRoot("git status && npm test") returns "git"
135
364
  */
136
365
  export function getCommandRoot(command) {
137
- const trimmedCommand = command.trim();
138
- if (!trimmedCommand) {
366
+ const parsed = parseCommandDetails(command);
367
+ if (!parsed || parsed.hasError || parsed.details.length === 0) {
139
368
  return undefined;
140
369
  }
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;
370
+ return parsed.details[0]?.name;
156
371
  }
157
372
  export function getCommandRoots(command) {
158
373
  if (!command) {
159
374
  return [];
160
375
  }
161
- return splitCommands(command)
162
- .map((c) => getCommandRoot(c))
163
- .filter((c) => !!c);
376
+ const parsed = parseCommandDetails(command);
377
+ if (!parsed || parsed.hasError) {
378
+ return [];
379
+ }
380
+ return parsed.details.map((detail) => detail.name).filter(Boolean);
164
381
  }
165
382
  export function stripShellWrapper(command) {
166
- const pattern = /^\s*(?:sh|bash|zsh|cmd.exe)\s+(?:\/c|-c)\s+/;
383
+ const pattern = /^\s*(?:(?:sh|bash|zsh)\s+-c|cmd\.exe\s+\/c|powershell(?:\.exe)?\s+(?:-NoProfile\s+)?-Command|pwsh(?:\.exe)?\s+(?:-NoProfile\s+)?-Command)\s+/i;
167
384
  const match = command.match(pattern);
168
385
  if (match) {
169
386
  let newCommand = command.substring(match[0].length).trim();
@@ -183,54 +400,6 @@ export function stripShellWrapper(command) {
183
400
  * @param command The shell command string to check
184
401
  * @returns true if command substitution would be executed by bash
185
402
  */
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
- }
234
403
  /**
235
404
  * Checks a shell command against security policies and allowlists.
236
405
  *
@@ -256,17 +425,19 @@ export function detectCommandSubstitution(command) {
256
425
  * @returns An object detailing which commands are not allowed.
257
426
  */
258
427
  export function checkCommandPermissions(command, config, sessionAllowlist) {
259
- // Disallow command substitution for security.
260
- if (detectCommandSubstitution(command)) {
428
+ const parseResult = parseCommandDetails(command);
429
+ if (!parseResult || parseResult.hasError) {
261
430
  return {
262
431
  allAllowed: false,
263
432
  disallowedCommands: [command],
264
- blockReason: 'Command substitution using $(), `` ` ``, <(), or >() is not allowed for security reasons',
433
+ blockReason: 'Command rejected because it could not be parsed safely',
265
434
  isHardDenial: true,
266
435
  };
267
436
  }
268
437
  const normalize = (cmd) => cmd.trim().replace(/\s+/g, ' ');
269
- const commandsToValidate = splitCommands(command).map(normalize);
438
+ const commandsToValidate = parseResult.details
439
+ .map((detail) => normalize(detail.text))
440
+ .filter(Boolean);
270
441
  const invocation = {
271
442
  params: { command: '' },
272
443
  };
@@ -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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"}