@vybestack/llxprt-code-core 0.8.0-nightly.260113.48db4b09b → 0.8.0-nightly.260114.3fcfeb2b0

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 (71) hide show
  1. package/README.md +64 -27
  2. package/dist/src/code_assist/converter.d.ts +2 -0
  3. package/dist/src/code_assist/converter.js +2 -0
  4. package/dist/src/code_assist/converter.js.map +1 -1
  5. package/dist/src/commands/extensions.d.ts +7 -0
  6. package/dist/src/commands/extensions.js +9 -0
  7. package/dist/src/commands/extensions.js.map +1 -0
  8. package/dist/src/config/config.d.ts +12 -2
  9. package/dist/src/config/config.js +30 -5
  10. package/dist/src/config/config.js.map +1 -1
  11. package/dist/src/core/nonInteractiveToolExecutor.d.ts +18 -2
  12. package/dist/src/core/nonInteractiveToolExecutor.js +21 -190
  13. package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
  14. package/dist/src/core/turn.d.ts +2 -0
  15. package/dist/src/core/turn.js +3 -1
  16. package/dist/src/core/turn.js.map +1 -1
  17. package/dist/src/index.d.ts +2 -0
  18. package/dist/src/index.js +3 -0
  19. package/dist/src/index.js.map +1 -1
  20. package/dist/src/mcp/google-auth-provider.d.ts +2 -0
  21. package/dist/src/mcp/google-auth-provider.js +19 -2
  22. package/dist/src/mcp/google-auth-provider.js.map +1 -1
  23. package/dist/src/mcp/oauth-provider.js +2 -2
  24. package/dist/src/mcp/oauth-provider.js.map +1 -1
  25. package/dist/src/mcp/oauth-utils.d.ts +7 -0
  26. package/dist/src/mcp/oauth-utils.js +19 -0
  27. package/dist/src/mcp/oauth-utils.js.map +1 -1
  28. package/dist/src/mcp/sa-impersonation-provider.d.ts +0 -6
  29. package/dist/src/mcp/sa-impersonation-provider.js +3 -21
  30. package/dist/src/mcp/sa-impersonation-provider.js.map +1 -1
  31. package/dist/src/mcp/token-storage/keychain-token-storage.js +4 -3
  32. package/dist/src/mcp/token-storage/keychain-token-storage.js.map +1 -1
  33. package/dist/src/services/fileDiscoveryService.d.ts +9 -0
  34. package/dist/src/services/fileDiscoveryService.js +23 -11
  35. package/dist/src/services/fileDiscoveryService.js.map +1 -1
  36. package/dist/src/tools/edit.js +4 -1
  37. package/dist/src/tools/edit.js.map +1 -1
  38. package/dist/src/tools/glob.js +6 -6
  39. package/dist/src/tools/glob.js.map +1 -1
  40. package/dist/src/tools/ls.js +7 -15
  41. package/dist/src/tools/ls.js.map +1 -1
  42. package/dist/src/tools/read-file.js +5 -2
  43. package/dist/src/tools/read-file.js.map +1 -1
  44. package/dist/src/tools/read-many-files.js +3 -14
  45. package/dist/src/tools/read-many-files.js.map +1 -1
  46. package/dist/src/tools/shell.js +11 -5
  47. package/dist/src/tools/shell.js.map +1 -1
  48. package/dist/src/tools/tools.js +3 -3
  49. package/dist/src/tools/tools.js.map +1 -1
  50. package/dist/src/types/modelParams.d.ts +8 -2
  51. package/dist/src/types/modelParams.js.map +1 -1
  52. package/dist/src/utils/events.d.ts +53 -0
  53. package/dist/src/utils/events.js +60 -0
  54. package/dist/src/utils/events.js.map +1 -0
  55. package/dist/src/utils/memoryDiscovery.d.ts +2 -1
  56. package/dist/src/utils/memoryDiscovery.js +9 -9
  57. package/dist/src/utils/memoryDiscovery.js.map +1 -1
  58. package/dist/src/utils/paths.js +126 -26
  59. package/dist/src/utils/paths.js.map +1 -1
  60. package/dist/src/utils/retry.d.ts +8 -0
  61. package/dist/src/utils/retry.js +19 -2
  62. package/dist/src/utils/retry.js.map +1 -1
  63. package/dist/src/utils/shell-parser.d.ts +28 -0
  64. package/dist/src/utils/shell-parser.js +101 -0
  65. package/dist/src/utils/shell-parser.js.map +1 -1
  66. package/dist/src/utils/shell-utils.js +46 -6
  67. package/dist/src/utils/shell-utils.js.map +1 -1
  68. package/dist/src/utils/tool-utils.d.ts +10 -0
  69. package/dist/src/utils/tool-utils.js +42 -1
  70. package/dist/src/utils/tool-utils.js.map +1 -1
  71. package/package.json +1 -1
@@ -42,6 +42,38 @@ export function shortenPath(filePath, maxLen = 35) {
42
42
  if (filePath.length <= maxLen) {
43
43
  return filePath;
44
44
  }
45
+ const simpleTruncate = () => {
46
+ const keepLen = Math.floor((maxLen - 3) / 2);
47
+ if (keepLen <= 0) {
48
+ return filePath.substring(0, maxLen - 3) + '...';
49
+ }
50
+ const start = filePath.substring(0, keepLen);
51
+ const end = filePath.substring(filePath.length - keepLen);
52
+ return `${start}...${end}`;
53
+ };
54
+ const truncateComponent = (component, targetLength, mode) => {
55
+ if (component.length <= targetLength) {
56
+ return component;
57
+ }
58
+ if (targetLength <= 0) {
59
+ return '';
60
+ }
61
+ if (targetLength <= 3) {
62
+ if (mode === 'end') {
63
+ return component.slice(-targetLength);
64
+ }
65
+ return component.slice(0, targetLength);
66
+ }
67
+ if (mode === 'start') {
68
+ return `${component.slice(0, targetLength - 3)}...`;
69
+ }
70
+ if (mode === 'end') {
71
+ return `...${component.slice(component.length - (targetLength - 3))}`;
72
+ }
73
+ const front = Math.ceil((targetLength - 3) / 2);
74
+ const back = targetLength - 3 - front;
75
+ return `${component.slice(0, front)}...${component.slice(component.length - back)}`;
76
+ };
45
77
  const parsedPath = path.parse(filePath);
46
78
  const root = parsedPath.root;
47
79
  const separator = path.sep;
@@ -51,44 +83,112 @@ export function shortenPath(filePath, maxLen = 35) {
51
83
  // Handle cases with no segments after root (e.g., "/", "C:\") or only one segment
52
84
  if (segments.length <= 1) {
53
85
  // Fall back to simple start/end truncation for very short paths or single segments
54
- const keepLen = Math.floor((maxLen - 3) / 2);
55
- // Ensure keepLen is not negative if maxLen is very small
56
- if (keepLen <= 0) {
57
- return filePath.substring(0, maxLen - 3) + '...';
58
- }
59
- const start = filePath.substring(0, keepLen);
60
- const end = filePath.substring(filePath.length - keepLen);
61
- return `${start}...${end}`;
86
+ return simpleTruncate();
62
87
  }
63
88
  const firstDir = segments[0];
64
89
  const lastSegment = segments[segments.length - 1];
65
90
  const startComponent = root + firstDir;
66
- const endPartSegments = [];
67
- // Base length: separator + "..." + lastDir
68
- let currentLength = separator.length + lastSegment.length;
69
- // Iterate backwards through segments (excluding the first one)
70
- for (let i = segments.length - 2; i >= 0; i--) {
91
+ const endPartSegments = [lastSegment];
92
+ let endPartLength = lastSegment.length;
93
+ // Iterate backwards through the middle segments
94
+ for (let i = segments.length - 2; i > 0; i--) {
71
95
  const segment = segments[i];
72
- // Length needed if we add this segment: current + separator + segment
73
- const lengthWithSegment = currentLength + separator.length + segment.length;
74
- if (lengthWithSegment <= maxLen) {
75
- endPartSegments.unshift(segment); // Add to the beginning of the end part
76
- currentLength = lengthWithSegment;
96
+ const newLength = startComponent.length +
97
+ separator.length +
98
+ 3 + // for "..."
99
+ separator.length +
100
+ endPartLength +
101
+ separator.length +
102
+ segment.length;
103
+ if (newLength <= maxLen) {
104
+ endPartSegments.unshift(segment);
105
+ endPartLength += separator.length + segment.length;
77
106
  }
78
107
  else {
79
108
  break;
80
109
  }
81
110
  }
82
- let result = endPartSegments.join(separator) + separator + lastSegment;
83
- if (currentLength > maxLen) {
84
- return result;
111
+ const components = [firstDir, ...endPartSegments];
112
+ const componentModes = components.map((_, index) => {
113
+ if (index === 0) {
114
+ return 'start';
115
+ }
116
+ if (index === components.length - 1) {
117
+ return 'end';
118
+ }
119
+ return 'center';
120
+ });
121
+ const separatorsCount = endPartSegments.length + 1;
122
+ const fixedLen = root.length + separatorsCount * separator.length + 3; // ellipsis length
123
+ const availableForComponents = maxLen - fixedLen;
124
+ const trailingFallback = () => {
125
+ const ellipsisTail = `...${separator}${lastSegment}`;
126
+ if (ellipsisTail.length <= maxLen) {
127
+ return ellipsisTail;
128
+ }
129
+ if (root) {
130
+ const rootEllipsisTail = `${root}...${separator}${lastSegment}`;
131
+ if (rootEllipsisTail.length <= maxLen) {
132
+ return rootEllipsisTail;
133
+ }
134
+ }
135
+ if (root && `${root}${lastSegment}`.length <= maxLen) {
136
+ return `${root}${lastSegment}`;
137
+ }
138
+ if (lastSegment.length <= maxLen) {
139
+ return lastSegment;
140
+ }
141
+ // As a final resort (e.g., last segment itself exceeds maxLen), fall back to simple truncation.
142
+ return simpleTruncate();
143
+ };
144
+ if (availableForComponents <= 0) {
145
+ return trailingFallback();
146
+ }
147
+ const minLengths = components.map((component, index) => {
148
+ if (index === 0) {
149
+ return Math.min(component.length, 1);
150
+ }
151
+ if (index === components.length - 1) {
152
+ return component.length; // Never truncate the last segment when possible.
153
+ }
154
+ return Math.min(component.length, 1);
155
+ });
156
+ const minTotal = minLengths.reduce((sum, len) => sum + len, 0);
157
+ if (availableForComponents < minTotal) {
158
+ return trailingFallback();
159
+ }
160
+ const budgets = components.map((component) => component.length);
161
+ let currentTotal = budgets.reduce((sum, len) => sum + len, 0);
162
+ const pickIndexToReduce = () => {
163
+ let bestIndex = -1;
164
+ let bestScore = -Infinity;
165
+ for (let i = 0; i < budgets.length; i++) {
166
+ if (budgets[i] <= minLengths[i]) {
167
+ continue;
168
+ }
169
+ const isLast = i === budgets.length - 1;
170
+ const score = (isLast ? 0 : 1_000_000) + budgets[i];
171
+ if (score > bestScore) {
172
+ bestScore = score;
173
+ bestIndex = i;
174
+ }
175
+ }
176
+ return bestIndex;
177
+ };
178
+ while (currentTotal > availableForComponents) {
179
+ const index = pickIndexToReduce();
180
+ if (index === -1) {
181
+ return trailingFallback();
182
+ }
183
+ budgets[index]--;
184
+ currentTotal--;
85
185
  }
86
- // Construct the final path
87
- result = startComponent + separator + result;
88
- // As a final check, if the result is somehow still too long
89
- // truncate the result string from the beginning, prefixing with "...".
186
+ const truncatedComponents = components.map((component, index) => truncateComponent(component, budgets[index], componentModes[index]));
187
+ const truncatedFirst = truncatedComponents[0];
188
+ const truncatedEnd = truncatedComponents.slice(1).join(separator);
189
+ const result = `${root}${truncatedFirst}${separator}...${separator}${truncatedEnd}`;
90
190
  if (result.length > maxLen) {
91
- return '...' + result.substring(result.length - maxLen - 3);
191
+ return trailingFallback();
92
192
  }
93
193
  return result;
94
194
  }
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/utils/paths.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,14 @@ export declare function isNetworkTransientError(error: unknown): boolean;
32
32
  * @throws The last error encountered if all attempts fail.
33
33
  */
34
34
  export declare function retryWithBackoff<T>(fn: () => Promise<T>, options?: Partial<RetryOptions>): Promise<T>;
35
+ /**
36
+ * Determines if an error is an Anthropic overloaded_error.
37
+ * Anthropic returns overloaded_error as an error type (not HTTP status):
38
+ * {"type":"error","error":{"type":"overloaded_error","message":"Overloaded"}}
39
+ * @param error The error object.
40
+ * @returns True if the error is an overloaded_error, false otherwise.
41
+ */
42
+ export declare function isOverloadError(error: unknown): boolean;
35
43
  /**
36
44
  * Extracts the HTTP status code from an error object.
37
45
  * @param error The error object.
@@ -217,7 +217,8 @@ export async function retryWithBackoff(fn, options) {
217
217
  throw error;
218
218
  }
219
219
  const errorStatus = getErrorStatus(error);
220
- const is429 = errorStatus === 429;
220
+ const isOverload = isOverloadError(error);
221
+ const is429 = errorStatus === 429 || isOverload;
221
222
  const is402 = errorStatus === 402;
222
223
  const is401 = errorStatus === 401;
223
224
  // Track consecutive 429 errors for bucket failover
@@ -325,6 +326,21 @@ export async function retryWithBackoff(fn, options) {
325
326
  // Added for type safety and to satisfy the compiler that a promise is always returned.
326
327
  throw new Error('Retry attempts exhausted');
327
328
  }
329
+ /**
330
+ * Determines if an error is an Anthropic overloaded_error.
331
+ * Anthropic returns overloaded_error as an error type (not HTTP status):
332
+ * {"type":"error","error":{"type":"overloaded_error","message":"Overloaded"}}
333
+ * @param error The error object.
334
+ * @returns True if the error is an overloaded_error, false otherwise.
335
+ */
336
+ export function isOverloadError(error) {
337
+ if (error && typeof error === 'object') {
338
+ const errorObj = error;
339
+ const errorType = errorObj.error?.type || errorObj.type;
340
+ return errorType === 'overloaded_error';
341
+ }
342
+ return false;
343
+ }
328
344
  /**
329
345
  * Extracts the HTTP status code from an error object.
330
346
  * @param error The error object.
@@ -387,8 +403,9 @@ function getRetryAfterDelayMs(error) {
387
403
  */
388
404
  function getDelayDurationAndStatus(error) {
389
405
  const errorStatus = getErrorStatus(error);
406
+ const isOverload = isOverloadError(error);
390
407
  let delayDurationMs = 0;
391
- if (errorStatus === 429) {
408
+ if (errorStatus === 429 || isOverload) {
392
409
  delayDurationMs = getRetryAfterDelayMs(error);
393
410
  }
394
411
  return { delayDurationMs, errorStatus };
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../src/utils/retry.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,34 @@ export declare function parseShellCommand(command: string): Tree | null;
39
39
  * This handles pipelines, command lists (&&, ||, ;), and subshells.
40
40
  */
41
41
  export declare function extractCommandNames(tree: Tree): string[];
42
+ /**
43
+ * Parsed command detail containing the command name and full text.
44
+ */
45
+ export interface ParsedCommandDetail {
46
+ name: string;
47
+ text: string;
48
+ }
49
+ /**
50
+ * Result of parsing command details.
51
+ */
52
+ export interface CommandParseResult {
53
+ details: ParsedCommandDetail[];
54
+ hasError: boolean;
55
+ }
56
+ /**
57
+ * Collect all command details from a tree by walking the entire AST.
58
+ * This includes commands inside command substitutions ($(), ``), process substitutions (<(), >()),
59
+ * function bodies, subshells, and any other nested contexts.
60
+ *
61
+ * This is essential for security - we need to validate ALL commands that will execute,
62
+ * not just top-level commands.
63
+ */
64
+ export declare function collectCommandDetails(tree: Tree, source: string): ParsedCommandDetail[];
65
+ /**
66
+ * Parse a shell command and extract all command details including nested commands.
67
+ * Returns null if parsing fails or tree-sitter is not available.
68
+ */
69
+ export declare function parseCommandDetails(command: string): CommandParseResult | null;
42
70
  /**
43
71
  * Check if a command contains command substitution patterns.
44
72
  * Uses tree-sitter AST to accurately detect:
@@ -93,6 +93,107 @@ export function extractCommandNames(tree) {
93
93
  }
94
94
  return commands;
95
95
  }
96
+ /**
97
+ * Normalize a command name by removing quotes and extracting the base name.
98
+ */
99
+ function normalizeCommandName(raw) {
100
+ if (raw.length >= 2) {
101
+ const first = raw[0];
102
+ const last = raw[raw.length - 1];
103
+ if ((first === '"' && last === '"') || (first === "'" && last === "'")) {
104
+ return raw.slice(1, -1);
105
+ }
106
+ }
107
+ const trimmed = raw.trim();
108
+ if (!trimmed) {
109
+ return trimmed;
110
+ }
111
+ return trimmed.split(/[\\/]/).pop() ?? trimmed;
112
+ }
113
+ /**
114
+ * Extract command name from a tree-sitter node.
115
+ * Handles different node types: command, declaration_command, unset_command, test_command.
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
+ /**
140
+ * Collect all command details from a tree by walking the entire AST.
141
+ * This includes commands inside command substitutions ($(), ``), process substitutions (<(), >()),
142
+ * function bodies, subshells, and any other nested contexts.
143
+ *
144
+ * This is essential for security - we need to validate ALL commands that will execute,
145
+ * not just top-level commands.
146
+ */
147
+ export function collectCommandDetails(tree, source) {
148
+ const stack = [tree.rootNode];
149
+ const details = [];
150
+ while (stack.length > 0) {
151
+ const current = stack.pop();
152
+ if (!current) {
153
+ continue;
154
+ }
155
+ const commandName = extractNameFromNode(current);
156
+ if (commandName) {
157
+ details.push({
158
+ name: commandName,
159
+ text: source.slice(current.startIndex, current.endIndex).trim(),
160
+ });
161
+ }
162
+ // Push children in reverse order so we process them left-to-right
163
+ for (let i = current.namedChildCount - 1; i >= 0; i -= 1) {
164
+ const child = current.namedChild(i);
165
+ if (child) {
166
+ stack.push(child);
167
+ }
168
+ }
169
+ }
170
+ return details;
171
+ }
172
+ /**
173
+ * Parse a shell command and extract all command details including nested commands.
174
+ * Returns null if parsing fails or tree-sitter is not available.
175
+ */
176
+ export function parseCommandDetails(command) {
177
+ if (!parser || !bashLanguage) {
178
+ return null;
179
+ }
180
+ try {
181
+ const tree = parser.parse(command);
182
+ if (!tree) {
183
+ return { details: [], hasError: true };
184
+ }
185
+ // Check for syntax errors in the tree
186
+ const hasError = tree.rootNode.hasError;
187
+ if (hasError) {
188
+ return { details: [], hasError: true };
189
+ }
190
+ const details = collectCommandDetails(tree, command);
191
+ return { details, hasError: false };
192
+ }
193
+ catch {
194
+ return null;
195
+ }
196
+ }
96
197
  /**
97
198
  * Check if a command contains command substitution patterns.
98
199
  * Uses tree-sitter AST to accurately detect:
@@ -1 +1 @@
1
- {"version":3,"file":"shell-parser.js","sourceRoot":"","sources":["../../../src/utils/shell-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-parser.js","sourceRoot":"","sources":["../../../src/utils/shell-parser.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,11 @@
3
3
  * Copyright 2025 Google LLC
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
+ import { normalizeShellReplacement } from '../config/config.js';
6
7
  import os from 'node:os';
7
8
  import { quote } from 'shell-quote';
8
9
  import { doesToolInvocationMatch } from './tool-utils.js';
9
- import { isParserAvailable, parseShellCommand, extractCommandNames, hasCommandSubstitution as treeSitterHasCommandSubstitution, splitCommandsWithTree, } from './shell-parser.js';
10
+ import { isParserAvailable, parseShellCommand, extractCommandNames, hasCommandSubstitution as treeSitterHasCommandSubstitution, splitCommandsWithTree, parseCommandDetails, } from './shell-parser.js';
10
11
  export const SHELL_TOOL_NAMES = ['run_shell_command', 'ShellTool'];
11
12
  /**
12
13
  * Determines the appropriate shell configuration for the current platform.
@@ -302,20 +303,24 @@ function detectCommandSubstitutionRegex(command) {
302
303
  * @returns An object detailing which commands are not allowed.
303
304
  */
304
305
  export function checkCommandPermissions(command, config, sessionAllowlist) {
305
- // Check if shell replacement is allowed via ephemeral setting or config
306
+ // Check shell replacement mode via ephemeral setting or config
306
307
  const ephemeralValue = config.getEphemeralSetting?.('shell-replacement');
307
308
  const configValue = config.getShellReplacement?.();
309
+ const shellReplacementMode = normalizeShellReplacement(ephemeralValue ?? configValue ?? 'allowlist');
308
310
  // Debug logging when VERBOSE is set
309
311
  if (process.env.VERBOSE === 'true') {
310
312
  console.log('[SHELL-UTILS] Shell replacement check:', {
311
313
  ephemeralValue,
312
314
  configValue,
315
+ shellReplacementMode,
313
316
  command: command.substring(0, 50) + (command.length > 50 ? '...' : ''),
314
317
  });
315
318
  }
316
- const shellReplacementAllowed = ephemeralValue === true || configValue === true;
317
- // Disallow command substitution for security unless explicitly allowed
318
- if (!shellReplacementAllowed && detectCommandSubstitution(command)) {
319
+ // Handle shell replacement modes:
320
+ // - 'none': Block ALL command substitution (most restrictive)
321
+ // - 'allowlist': Allow substitution, validate inner commands against coreTools (default, matches upstream)
322
+ // - 'all': Allow all substitution unconditionally (least restrictive, legacy true behavior)
323
+ if (shellReplacementMode === 'none' && detectCommandSubstitution(command)) {
319
324
  return {
320
325
  allAllowed: false,
321
326
  disallowedCommands: [command],
@@ -324,7 +329,42 @@ export function checkCommandPermissions(command, config, sessionAllowlist) {
324
329
  };
325
330
  }
326
331
  const normalize = (cmd) => cmd.trim().replace(/\s+/g, ' ');
327
- const commandsToValidate = splitCommands(command).map(normalize);
332
+ let commandsToValidate;
333
+ // Mode behavior for command extraction:
334
+ // - 'allowlist': validate ALL nested commands (tree-sitter deep walk when available)
335
+ // - 'all': allow substitution without deep validation (legacy behavior)
336
+ // - 'none': handled above
337
+ if (shellReplacementMode === 'allowlist') {
338
+ // Try to use tree-sitter for deep command extraction
339
+ const parseResult = parseCommandDetails(command);
340
+ if (parseResult &&
341
+ !parseResult.hasError &&
342
+ parseResult.details.length > 0) {
343
+ // Use tree-sitter results - extracts ALL commands including nested ones
344
+ commandsToValidate = parseResult.details
345
+ .map((detail) => normalize(detail.text))
346
+ .filter(Boolean);
347
+ }
348
+ else if (parseResult?.hasError) {
349
+ // Tree-sitter detected a syntax error - reject for safety
350
+ return {
351
+ allAllowed: false,
352
+ disallowedCommands: [command],
353
+ blockReason: 'Command rejected because it could not be parsed safely',
354
+ isHardDenial: true,
355
+ };
356
+ }
357
+ else {
358
+ // Tree-sitter not available, fall back to splitCommands
359
+ // This is less secure but allows basic functionality
360
+ commandsToValidate = splitCommands(command).map(normalize);
361
+ }
362
+ }
363
+ else {
364
+ // 'all' mode: do not attempt deep extraction/validation.
365
+ // Just use simple command splitting (legacy behavior)
366
+ commandsToValidate = splitCommands(command).map(normalize);
367
+ }
328
368
  const invocation = {
329
369
  params: { command: '' },
330
370
  };