@enactprotocol/shared 2.1.21 → 2.1.23
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/execution/command.d.ts +38 -4
- package/dist/execution/command.d.ts.map +1 -1
- package/dist/execution/command.js +42 -8
- package/dist/execution/command.js.map +1 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.d.ts.map +1 -1
- package/dist/execution/index.js.map +1 -1
- package/dist/execution/types.d.ts +6 -0
- package/dist/execution/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/execution/command.ts +58 -7
- package/src/execution/index.ts +1 -0
- package/src/execution/types.ts +6 -0
- package/tests/execution/command.test.ts +231 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles ${parameter} substitution in command templates with proper escaping.
|
|
5
5
|
*
|
|
6
|
+
* ## Parameter Recognition
|
|
7
|
+
*
|
|
8
|
+
* Only `${...}` patterns that match parameters defined in the tool's inputSchema
|
|
9
|
+
* are substituted. Other `${...}` patterns (like bash variables, arrays, etc.)
|
|
10
|
+
* are passed through unchanged to the shell.
|
|
11
|
+
*
|
|
12
|
+
* This allows natural use of shell syntax:
|
|
13
|
+
* - `${name}` - Substituted if "name" is in inputSchema
|
|
14
|
+
* - `${MY_VAR}` - Passed through to bash (not in inputSchema)
|
|
15
|
+
* - `${array[$i]}` - Passed through to bash (not in inputSchema)
|
|
16
|
+
*
|
|
6
17
|
* ## Quoting Behavior
|
|
7
18
|
*
|
|
8
19
|
* Enact automatically applies shell-escaping (quoting) to parameter values
|
|
@@ -26,6 +37,17 @@
|
|
|
26
37
|
* 3. Emit a warning to help tool authors fix their templates
|
|
27
38
|
*/
|
|
28
39
|
import type { InterpolationOptions, ParsedCommand } from "./types";
|
|
40
|
+
/**
|
|
41
|
+
* Options for parsing a command template
|
|
42
|
+
*/
|
|
43
|
+
export interface ParseCommandOptions {
|
|
44
|
+
/**
|
|
45
|
+
* Set of known parameter names from the inputSchema.
|
|
46
|
+
* Only ${...} patterns matching these names will be treated as parameters.
|
|
47
|
+
* If not provided, ALL ${...} patterns are treated as parameters (legacy behavior).
|
|
48
|
+
*/
|
|
49
|
+
knownParameters?: Set<string>;
|
|
50
|
+
}
|
|
29
51
|
/**
|
|
30
52
|
* Parse a command template into tokens
|
|
31
53
|
*
|
|
@@ -33,10 +55,15 @@ import type { InterpolationOptions, ParsedCommand } from "./types";
|
|
|
33
55
|
* - Parameters with modifiers: ${param:raw}
|
|
34
56
|
* - Parameters surrounded by quotes: '${param}' or "${param}"
|
|
35
57
|
*
|
|
58
|
+
* When knownParameters is provided, only ${...} patterns matching known parameter
|
|
59
|
+
* names are treated as parameters. Other patterns are kept as literals, allowing
|
|
60
|
+
* natural shell syntax like ${MY_VAR} or ${array[$i]} to pass through.
|
|
61
|
+
*
|
|
36
62
|
* @param command - Command template with ${parameter} placeholders
|
|
63
|
+
* @param options - Parse options including knownParameters
|
|
37
64
|
* @returns Parsed command with tokens and parameter list
|
|
38
65
|
*/
|
|
39
|
-
export declare function parseCommand(command: string): ParsedCommand;
|
|
66
|
+
export declare function parseCommand(command: string, options?: ParseCommandOptions): ParsedCommand;
|
|
40
67
|
/**
|
|
41
68
|
* Shell-escape a value for safe inclusion in a command
|
|
42
69
|
*
|
|
@@ -70,6 +97,9 @@ export declare function valueToString(value: unknown, jsonifyObjects?: boolean):
|
|
|
70
97
|
* - Raw parameters: `${param:raw}` - no quoting applied
|
|
71
98
|
* - Quoted parameters: `'${param}'` - quotes stripped, warning emitted
|
|
72
99
|
*
|
|
100
|
+
* When knownParameters is provided in options, only matching ${...} patterns
|
|
101
|
+
* are substituted. Other patterns pass through unchanged for shell processing.
|
|
102
|
+
*
|
|
73
103
|
* @param command - Command template or parsed command
|
|
74
104
|
* @param params - Parameter values
|
|
75
105
|
* @param options - Interpolation options
|
|
@@ -108,10 +138,12 @@ export declare function needsShellWrap(command: string): boolean;
|
|
|
108
138
|
* Prepare a command for execution
|
|
109
139
|
*
|
|
110
140
|
* Parses the command and determines if it needs shell wrapping.
|
|
141
|
+
* When knownParameters is provided, only matching ${...} patterns are
|
|
142
|
+
* substituted, allowing shell syntax to pass through unchanged.
|
|
111
143
|
*
|
|
112
144
|
* @param command - Command template
|
|
113
145
|
* @param params - Parameter values for interpolation
|
|
114
|
-
* @param options - Interpolation options
|
|
146
|
+
* @param options - Interpolation options (including knownParameters)
|
|
115
147
|
* @returns Command ready for execution [program, ...args]
|
|
116
148
|
*/
|
|
117
149
|
export declare function prepareCommand(command: string, params: Record<string, unknown>, options?: InterpolationOptions): string[];
|
|
@@ -120,14 +152,16 @@ export declare function prepareCommand(command: string, params: Record<string, u
|
|
|
120
152
|
*
|
|
121
153
|
* @param command - Parsed command
|
|
122
154
|
* @param params - Provided parameters
|
|
155
|
+
* @param options - Parse options including knownParameters
|
|
123
156
|
* @returns Array of missing parameter names
|
|
124
157
|
*/
|
|
125
|
-
export declare function getMissingParams(command: string | ParsedCommand, params: Record<string, unknown
|
|
158
|
+
export declare function getMissingParams(command: string | ParsedCommand, params: Record<string, unknown>, options?: ParseCommandOptions): string[];
|
|
126
159
|
/**
|
|
127
160
|
* Get all parameters in a command template
|
|
128
161
|
*
|
|
129
162
|
* @param command - Command template
|
|
163
|
+
* @param options - Parse options including knownParameters
|
|
130
164
|
* @returns Array of parameter names
|
|
131
165
|
*/
|
|
132
|
-
export declare function getCommandParams(command: string): string[];
|
|
166
|
+
export declare function getCommandParams(command: string, options?: ParseCommandOptions): string[];
|
|
133
167
|
//# sourceMappingURL=command.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/execution/command.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/execution/command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAgB,oBAAoB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAQjF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,aAAa,CA+F9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAejD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,cAAc,UAAO,GAAG,MAAM,CAkB3E;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,GAAG,aAAa,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,oBAAyB,GACjC,MAAM,CA6DR;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAgD1D;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAEvD;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGvD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,oBAAyB,GACjC,MAAM,EAAE,CAmBV;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,GAAG,aAAa,EAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,mBAAwB,GAChC,MAAM,EAAE,CAIV;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,EAAE,CAE7F"}
|
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles ${parameter} substitution in command templates with proper escaping.
|
|
5
5
|
*
|
|
6
|
+
* ## Parameter Recognition
|
|
7
|
+
*
|
|
8
|
+
* Only `${...}` patterns that match parameters defined in the tool's inputSchema
|
|
9
|
+
* are substituted. Other `${...}` patterns (like bash variables, arrays, etc.)
|
|
10
|
+
* are passed through unchanged to the shell.
|
|
11
|
+
*
|
|
12
|
+
* This allows natural use of shell syntax:
|
|
13
|
+
* - `${name}` - Substituted if "name" is in inputSchema
|
|
14
|
+
* - `${MY_VAR}` - Passed through to bash (not in inputSchema)
|
|
15
|
+
* - `${array[$i]}` - Passed through to bash (not in inputSchema)
|
|
16
|
+
*
|
|
6
17
|
* ## Quoting Behavior
|
|
7
18
|
*
|
|
8
19
|
* Enact automatically applies shell-escaping (quoting) to parameter values
|
|
@@ -37,10 +48,16 @@ const PARAM_PATTERN = /\$\{([^}:]+)(?::([^}]+))?\}/g;
|
|
|
37
48
|
* - Parameters with modifiers: ${param:raw}
|
|
38
49
|
* - Parameters surrounded by quotes: '${param}' or "${param}"
|
|
39
50
|
*
|
|
51
|
+
* When knownParameters is provided, only ${...} patterns matching known parameter
|
|
52
|
+
* names are treated as parameters. Other patterns are kept as literals, allowing
|
|
53
|
+
* natural shell syntax like ${MY_VAR} or ${array[$i]} to pass through.
|
|
54
|
+
*
|
|
40
55
|
* @param command - Command template with ${parameter} placeholders
|
|
56
|
+
* @param options - Parse options including knownParameters
|
|
41
57
|
* @returns Parsed command with tokens and parameter list
|
|
42
58
|
*/
|
|
43
|
-
export function parseCommand(command) {
|
|
59
|
+
export function parseCommand(command, options = {}) {
|
|
60
|
+
const { knownParameters } = options;
|
|
44
61
|
const tokens = [];
|
|
45
62
|
const parameters = [];
|
|
46
63
|
let lastIndex = 0;
|
|
@@ -52,6 +69,14 @@ export function parseCommand(command) {
|
|
|
52
69
|
const paramName = match[1];
|
|
53
70
|
const modifier = match[2]; // e.g., "raw"
|
|
54
71
|
const isRaw = modifier === "raw";
|
|
72
|
+
// Check if this is a known parameter (or if we're in legacy mode with no filter)
|
|
73
|
+
const isKnownParameter = !knownParameters || (paramName && knownParameters.has(paramName));
|
|
74
|
+
if (!isKnownParameter) {
|
|
75
|
+
// Not a known parameter - skip and continue
|
|
76
|
+
// The text will be included in the next literal segment
|
|
77
|
+
match = PARAM_PATTERN.exec(command);
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
55
80
|
// Check if preceded by a quote
|
|
56
81
|
let startIndex = match.index;
|
|
57
82
|
let surroundingQuotes;
|
|
@@ -171,6 +196,9 @@ export function valueToString(value, jsonifyObjects = true) {
|
|
|
171
196
|
* - Raw parameters: `${param:raw}` - no quoting applied
|
|
172
197
|
* - Quoted parameters: `'${param}'` - quotes stripped, warning emitted
|
|
173
198
|
*
|
|
199
|
+
* When knownParameters is provided in options, only matching ${...} patterns
|
|
200
|
+
* are substituted. Other patterns pass through unchanged for shell processing.
|
|
201
|
+
*
|
|
174
202
|
* @param command - Command template or parsed command
|
|
175
203
|
* @param params - Parameter values
|
|
176
204
|
* @param options - Interpolation options
|
|
@@ -178,8 +206,10 @@ export function valueToString(value, jsonifyObjects = true) {
|
|
|
178
206
|
* @throws Error if required parameter is missing and onMissing is "error"
|
|
179
207
|
*/
|
|
180
208
|
export function interpolateCommand(command, params, options = {}) {
|
|
181
|
-
const { escape: shouldEscape = true, jsonifyObjects = true, onMissing = "error", onWarning, } = options;
|
|
182
|
-
const parsed = typeof command === "string"
|
|
209
|
+
const { escape: shouldEscape = true, jsonifyObjects = true, onMissing = "error", onWarning, knownParameters, } = options;
|
|
210
|
+
const parsed = typeof command === "string"
|
|
211
|
+
? parseCommand(command, knownParameters ? { knownParameters } : {})
|
|
212
|
+
: command;
|
|
183
213
|
const parts = [];
|
|
184
214
|
for (const token of parsed.tokens) {
|
|
185
215
|
if (token.type === "literal") {
|
|
@@ -299,10 +329,12 @@ export function needsShellWrap(command) {
|
|
|
299
329
|
* Prepare a command for execution
|
|
300
330
|
*
|
|
301
331
|
* Parses the command and determines if it needs shell wrapping.
|
|
332
|
+
* When knownParameters is provided, only matching ${...} patterns are
|
|
333
|
+
* substituted, allowing shell syntax to pass through unchanged.
|
|
302
334
|
*
|
|
303
335
|
* @param command - Command template
|
|
304
336
|
* @param params - Parameter values for interpolation
|
|
305
|
-
* @param options - Interpolation options
|
|
337
|
+
* @param options - Interpolation options (including knownParameters)
|
|
306
338
|
* @returns Command ready for execution [program, ...args]
|
|
307
339
|
*/
|
|
308
340
|
export function prepareCommand(command, params, options = {}) {
|
|
@@ -327,19 +359,21 @@ export function prepareCommand(command, params, options = {}) {
|
|
|
327
359
|
*
|
|
328
360
|
* @param command - Parsed command
|
|
329
361
|
* @param params - Provided parameters
|
|
362
|
+
* @param options - Parse options including knownParameters
|
|
330
363
|
* @returns Array of missing parameter names
|
|
331
364
|
*/
|
|
332
|
-
export function getMissingParams(command, params) {
|
|
333
|
-
const parsed = typeof command === "string" ? parseCommand(command) : command;
|
|
365
|
+
export function getMissingParams(command, params, options = {}) {
|
|
366
|
+
const parsed = typeof command === "string" ? parseCommand(command, options) : command;
|
|
334
367
|
return parsed.parameters.filter((param) => params[param] === undefined);
|
|
335
368
|
}
|
|
336
369
|
/**
|
|
337
370
|
* Get all parameters in a command template
|
|
338
371
|
*
|
|
339
372
|
* @param command - Command template
|
|
373
|
+
* @param options - Parse options including knownParameters
|
|
340
374
|
* @returns Array of parameter names
|
|
341
375
|
*/
|
|
342
|
-
export function getCommandParams(command) {
|
|
343
|
-
return parseCommand(command).parameters;
|
|
376
|
+
export function getCommandParams(command, options = {}) {
|
|
377
|
+
return parseCommand(command, options).parameters;
|
|
344
378
|
}
|
|
345
379
|
//# sourceMappingURL=command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/execution/command.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/execution/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,6 @@
|
|
|
7
7
|
export type { ExecutionInput, FileInput, ExecutionOutput, ExecutionResult, ExecutionMetadata, ExecutionError, ExecutionErrorCode, ExecutionOptions, RetryConfig, ContainerRuntime, RuntimeDetection, RuntimeStatus, EngineHealth, EngineState, ExecutionProvider, ParsedCommand, CommandToken, InterpolationOptions, CommandWarning, CommandWarningCode, InputValidationResult, InputValidationError, DryRunResult, } from "./types.js";
|
|
8
8
|
export { DEFAULT_RETRY_CONFIG } from "./types.js";
|
|
9
9
|
export { detectRuntime, clearRuntimeCache, isRuntimeAvailable, getAvailableRuntimes, RuntimeStatusTracker, createRuntimeTracker, } from "./runtime.js";
|
|
10
|
-
export { parseCommand, interpolateCommand, shellEscape, parseCommandArgs, prepareCommand, getMissingParams, } from "./command.js";
|
|
10
|
+
export { parseCommand, interpolateCommand, shellEscape, parseCommandArgs, prepareCommand, getMissingParams, type ParseCommandOptions, } from "./command.js";
|
|
11
11
|
export { validateInputs, applyDefaults, getRequiredParams, getParamInfo, } from "./validation.js";
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAEV,cAAc,EACd,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAElB,gBAAgB,EAChB,WAAW,EAEX,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EAEb,YAAY,EACZ,WAAW,EAEX,iBAAiB,EAEjB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAElB,qBAAqB,EACrB,oBAAoB,EAEpB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAEV,cAAc,EACd,SAAS,EACT,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,kBAAkB,EAElB,gBAAgB,EAChB,WAAW,EAEX,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EAEb,YAAY,EACZ,WAAW,EAEX,iBAAiB,EAEjB,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,kBAAkB,EAElB,qBAAqB,EACrB,oBAAoB,EAEpB,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,KAAK,mBAAmB,GACzB,MAAM,cAAc,CAAC;AAGtB,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqCH,YAAY;AACZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,wBAAwB;AACxB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/execution/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAqCH,YAAY;AACZ,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,oBAAoB;AACpB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAEtB,wBAAwB;AACxB,OAAO,EACL,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,gBAAgB,GAEjB,MAAM,cAAc,CAAC;AAEtB,mBAAmB;AACnB,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,kEAAkE;AAClE,2EAA2E"}
|
|
@@ -258,6 +258,12 @@ export interface InterpolationOptions {
|
|
|
258
258
|
onMissing?: "error" | "empty" | "keep";
|
|
259
259
|
/** Callback for warnings (e.g., potential double-quoting) */
|
|
260
260
|
onWarning?: (warning: CommandWarning) => void;
|
|
261
|
+
/**
|
|
262
|
+
* Set of known parameter names from the inputSchema.
|
|
263
|
+
* Only ${...} patterns matching these names will be substituted.
|
|
264
|
+
* If not provided, ALL ${...} patterns are treated as parameters (legacy behavior).
|
|
265
|
+
*/
|
|
266
|
+
knownParameters?: Set<string>;
|
|
261
267
|
}
|
|
262
268
|
/**
|
|
263
269
|
* Warning types for command processing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@enactprotocol/shared",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.23",
|
|
4
4
|
"description": "Core business logic and utilities for Enact",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"typecheck": "tsc --noEmit"
|
|
19
19
|
},
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@enactprotocol/trust": "2.1.
|
|
21
|
+
"@enactprotocol/trust": "2.1.23",
|
|
22
22
|
"js-yaml": "^4.1.1",
|
|
23
23
|
"zod": "^4.1.13"
|
|
24
24
|
},
|
package/src/execution/command.ts
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles ${parameter} substitution in command templates with proper escaping.
|
|
5
5
|
*
|
|
6
|
+
* ## Parameter Recognition
|
|
7
|
+
*
|
|
8
|
+
* Only `${...}` patterns that match parameters defined in the tool's inputSchema
|
|
9
|
+
* are substituted. Other `${...}` patterns (like bash variables, arrays, etc.)
|
|
10
|
+
* are passed through unchanged to the shell.
|
|
11
|
+
*
|
|
12
|
+
* This allows natural use of shell syntax:
|
|
13
|
+
* - `${name}` - Substituted if "name" is in inputSchema
|
|
14
|
+
* - `${MY_VAR}` - Passed through to bash (not in inputSchema)
|
|
15
|
+
* - `${array[$i]}` - Passed through to bash (not in inputSchema)
|
|
16
|
+
*
|
|
6
17
|
* ## Quoting Behavior
|
|
7
18
|
*
|
|
8
19
|
* Enact automatically applies shell-escaping (quoting) to parameter values
|
|
@@ -34,6 +45,18 @@ import type { CommandToken, InterpolationOptions, ParsedCommand } from "./types"
|
|
|
34
45
|
*/
|
|
35
46
|
const PARAM_PATTERN = /\$\{([^}:]+)(?::([^}]+))?\}/g;
|
|
36
47
|
|
|
48
|
+
/**
|
|
49
|
+
* Options for parsing a command template
|
|
50
|
+
*/
|
|
51
|
+
export interface ParseCommandOptions {
|
|
52
|
+
/**
|
|
53
|
+
* Set of known parameter names from the inputSchema.
|
|
54
|
+
* Only ${...} patterns matching these names will be treated as parameters.
|
|
55
|
+
* If not provided, ALL ${...} patterns are treated as parameters (legacy behavior).
|
|
56
|
+
*/
|
|
57
|
+
knownParameters?: Set<string>;
|
|
58
|
+
}
|
|
59
|
+
|
|
37
60
|
/**
|
|
38
61
|
* Parse a command template into tokens
|
|
39
62
|
*
|
|
@@ -41,10 +64,16 @@ const PARAM_PATTERN = /\$\{([^}:]+)(?::([^}]+))?\}/g;
|
|
|
41
64
|
* - Parameters with modifiers: ${param:raw}
|
|
42
65
|
* - Parameters surrounded by quotes: '${param}' or "${param}"
|
|
43
66
|
*
|
|
67
|
+
* When knownParameters is provided, only ${...} patterns matching known parameter
|
|
68
|
+
* names are treated as parameters. Other patterns are kept as literals, allowing
|
|
69
|
+
* natural shell syntax like ${MY_VAR} or ${array[$i]} to pass through.
|
|
70
|
+
*
|
|
44
71
|
* @param command - Command template with ${parameter} placeholders
|
|
72
|
+
* @param options - Parse options including knownParameters
|
|
45
73
|
* @returns Parsed command with tokens and parameter list
|
|
46
74
|
*/
|
|
47
|
-
export function parseCommand(command: string): ParsedCommand {
|
|
75
|
+
export function parseCommand(command: string, options: ParseCommandOptions = {}): ParsedCommand {
|
|
76
|
+
const { knownParameters } = options;
|
|
48
77
|
const tokens: CommandToken[] = [];
|
|
49
78
|
const parameters: string[] = [];
|
|
50
79
|
|
|
@@ -60,6 +89,16 @@ export function parseCommand(command: string): ParsedCommand {
|
|
|
60
89
|
const modifier = match[2]; // e.g., "raw"
|
|
61
90
|
const isRaw = modifier === "raw";
|
|
62
91
|
|
|
92
|
+
// Check if this is a known parameter (or if we're in legacy mode with no filter)
|
|
93
|
+
const isKnownParameter = !knownParameters || (paramName && knownParameters.has(paramName));
|
|
94
|
+
|
|
95
|
+
if (!isKnownParameter) {
|
|
96
|
+
// Not a known parameter - skip and continue
|
|
97
|
+
// The text will be included in the next literal segment
|
|
98
|
+
match = PARAM_PATTERN.exec(command);
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
|
|
63
102
|
// Check if preceded by a quote
|
|
64
103
|
let startIndex = match.index;
|
|
65
104
|
let surroundingQuotes: "single" | "double" | undefined;
|
|
@@ -198,6 +237,9 @@ export function valueToString(value: unknown, jsonifyObjects = true): string {
|
|
|
198
237
|
* - Raw parameters: `${param:raw}` - no quoting applied
|
|
199
238
|
* - Quoted parameters: `'${param}'` - quotes stripped, warning emitted
|
|
200
239
|
*
|
|
240
|
+
* When knownParameters is provided in options, only matching ${...} patterns
|
|
241
|
+
* are substituted. Other patterns pass through unchanged for shell processing.
|
|
242
|
+
*
|
|
201
243
|
* @param command - Command template or parsed command
|
|
202
244
|
* @param params - Parameter values
|
|
203
245
|
* @param options - Interpolation options
|
|
@@ -214,9 +256,13 @@ export function interpolateCommand(
|
|
|
214
256
|
jsonifyObjects = true,
|
|
215
257
|
onMissing = "error",
|
|
216
258
|
onWarning,
|
|
259
|
+
knownParameters,
|
|
217
260
|
} = options;
|
|
218
261
|
|
|
219
|
-
const parsed =
|
|
262
|
+
const parsed =
|
|
263
|
+
typeof command === "string"
|
|
264
|
+
? parseCommand(command, knownParameters ? { knownParameters } : {})
|
|
265
|
+
: command;
|
|
220
266
|
|
|
221
267
|
const parts: string[] = [];
|
|
222
268
|
|
|
@@ -354,10 +400,12 @@ export function needsShellWrap(command: string): boolean {
|
|
|
354
400
|
* Prepare a command for execution
|
|
355
401
|
*
|
|
356
402
|
* Parses the command and determines if it needs shell wrapping.
|
|
403
|
+
* When knownParameters is provided, only matching ${...} patterns are
|
|
404
|
+
* substituted, allowing shell syntax to pass through unchanged.
|
|
357
405
|
*
|
|
358
406
|
* @param command - Command template
|
|
359
407
|
* @param params - Parameter values for interpolation
|
|
360
|
-
* @param options - Interpolation options
|
|
408
|
+
* @param options - Interpolation options (including knownParameters)
|
|
361
409
|
* @returns Command ready for execution [program, ...args]
|
|
362
410
|
*/
|
|
363
411
|
export function prepareCommand(
|
|
@@ -390,13 +438,15 @@ export function prepareCommand(
|
|
|
390
438
|
*
|
|
391
439
|
* @param command - Parsed command
|
|
392
440
|
* @param params - Provided parameters
|
|
441
|
+
* @param options - Parse options including knownParameters
|
|
393
442
|
* @returns Array of missing parameter names
|
|
394
443
|
*/
|
|
395
444
|
export function getMissingParams(
|
|
396
445
|
command: string | ParsedCommand,
|
|
397
|
-
params: Record<string, unknown
|
|
446
|
+
params: Record<string, unknown>,
|
|
447
|
+
options: ParseCommandOptions = {}
|
|
398
448
|
): string[] {
|
|
399
|
-
const parsed = typeof command === "string" ? parseCommand(command) : command;
|
|
449
|
+
const parsed = typeof command === "string" ? parseCommand(command, options) : command;
|
|
400
450
|
|
|
401
451
|
return parsed.parameters.filter((param) => params[param] === undefined);
|
|
402
452
|
}
|
|
@@ -405,8 +455,9 @@ export function getMissingParams(
|
|
|
405
455
|
* Get all parameters in a command template
|
|
406
456
|
*
|
|
407
457
|
* @param command - Command template
|
|
458
|
+
* @param options - Parse options including knownParameters
|
|
408
459
|
* @returns Array of parameter names
|
|
409
460
|
*/
|
|
410
|
-
export function getCommandParams(command: string): string[] {
|
|
411
|
-
return parseCommand(command).parameters;
|
|
461
|
+
export function getCommandParams(command: string, options: ParseCommandOptions = {}): string[] {
|
|
462
|
+
return parseCommand(command, options).parameters;
|
|
412
463
|
}
|
package/src/execution/index.ts
CHANGED
package/src/execution/types.ts
CHANGED
|
@@ -324,6 +324,12 @@ export interface InterpolationOptions {
|
|
|
324
324
|
onMissing?: "error" | "empty" | "keep";
|
|
325
325
|
/** Callback for warnings (e.g., potential double-quoting) */
|
|
326
326
|
onWarning?: (warning: CommandWarning) => void;
|
|
327
|
+
/**
|
|
328
|
+
* Set of known parameter names from the inputSchema.
|
|
329
|
+
* Only ${...} patterns matching these names will be substituted.
|
|
330
|
+
* If not provided, ALL ${...} patterns are treated as parameters (legacy behavior).
|
|
331
|
+
*/
|
|
332
|
+
knownParameters?: Set<string>;
|
|
327
333
|
}
|
|
328
334
|
|
|
329
335
|
/**
|