@mirnoorata/codexa 0.2.1 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +93 -29
- package/dist/cache-lock.js +72 -12
- package/dist/cache-lock.js.map +1 -1
- package/dist/cli/hooks.js +11 -6
- package/dist/cli/hooks.js.map +1 -1
- package/dist/cli.js +13 -4
- package/dist/cli.js.map +1 -1
- package/dist/graph.js +4 -2
- package/dist/graph.js.map +1 -1
- package/dist/implicit-baseline.d.ts +8 -0
- package/dist/implicit-baseline.js +94 -0
- package/dist/implicit-baseline.js.map +1 -0
- package/dist/init.d.ts +3 -0
- package/dist/init.js +124 -15
- package/dist/init.js.map +1 -1
- package/dist/mcp/compaction.d.ts +1 -0
- package/dist/mcp/compaction.js +24 -0
- package/dist/mcp/compaction.js.map +1 -1
- package/dist/mcp/envelope.d.ts +4 -1
- package/dist/mcp/envelope.js +45 -5
- package/dist/mcp/envelope.js.map +1 -1
- package/dist/mcp/prompts.d.ts +1 -1
- package/dist/mcp/prompts.js +5 -2
- package/dist/mcp/prompts.js.map +1 -1
- package/dist/mcp/tool-registry.d.ts +1 -0
- package/dist/mcp/tool-registry.js +5 -0
- package/dist/mcp/tool-registry.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -0
- package/dist/mcp/tools.js +6 -0
- package/dist/mcp/tools.js.map +1 -1
- package/dist/mcp-tool-catalog.d.ts +1 -1
- package/dist/mcp-tool-catalog.js +1 -1
- package/dist/mcp-tool-catalog.js.map +1 -1
- package/dist/mcp.js +31 -5
- package/dist/mcp.js.map +1 -1
- package/dist/query/post-edit/decision.d.ts +1 -0
- package/dist/query/post-edit/decision.js +13 -4
- package/dist/query/post-edit/decision.js.map +1 -1
- package/dist/query/post-edit.js +10 -2
- package/dist/query/post-edit.js.map +1 -1
- package/dist/query/verification/masking.d.ts +8 -0
- package/dist/query/verification/masking.js +82 -0
- package/dist/query/verification/masking.js.map +1 -0
- package/dist/query/verification/script-credit.d.ts +14 -0
- package/dist/query/verification/script-credit.js +232 -0
- package/dist/query/verification/script-credit.js.map +1 -0
- package/dist/query/verification/shell.d.ts +5 -1
- package/dist/query/verification/shell.js +288 -9
- package/dist/query/verification/shell.js.map +1 -1
- package/dist/query/verification.js +187 -21
- package/dist/query/verification.js.map +1 -1
- package/dist/query/workflow.js +2 -2
- package/dist/query/workflow.js.map +1 -1
- package/dist/repo-files.js +74 -14
- package/dist/repo-files.js.map +1 -1
- package/dist/resolver.js +20 -2
- package/dist/resolver.js.map +1 -1
- package/dist/retrieval.js +5 -5
- package/dist/retrieval.js.map +1 -1
- package/dist/task-snapshots.js +29 -0
- package/dist/task-snapshots.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.js.map +1 -1
- package/dist/util.d.ts +1 -0
- package/dist/util.js +7 -0
- package/dist/util.js.map +1 -1
- package/integrations/.claude-plugin/marketplace.json +23 -0
- package/integrations/claude-code/.claude-plugin/plugin.json +16 -0
- package/integrations/claude-code/.mcp.json +8 -0
- package/integrations/claude-code/README.md +177 -0
- package/integrations/claude-code/commands/codexa-brief.md +14 -0
- package/integrations/claude-code/commands/codexa-impact.md +14 -0
- package/integrations/claude-code/commands/codexa-plan.md +20 -0
- package/integrations/claude-code/commands/codexa-review.md +23 -0
- package/integrations/claude-code/commands/codexa-status.md +10 -0
- package/integrations/claude-code/hooks/hooks.json +39 -0
- package/integrations/claude-code/scripts/cmd/brief.sh +18 -0
- package/integrations/claude-code/scripts/cmd/impact.sh +35 -0
- package/integrations/claude-code/scripts/cmd/lib.sh +136 -0
- package/integrations/claude-code/scripts/cmd/plan.sh +52 -0
- package/integrations/claude-code/scripts/cmd/review.sh +66 -0
- package/integrations/claude-code/scripts/cmd/status.sh +52 -0
- package/integrations/claude-code/scripts/codexa-mcp.js +111 -0
- package/integrations/claude-code/scripts/lib/codexa-repo.sh +773 -0
- package/integrations/claude-code/scripts/pre-edit.sh +116 -0
- package/integrations/claude-code/scripts/session-start.sh +201 -0
- package/integrations/claude-code/scripts/stop.sh +443 -0
- package/integrations/claude-code/tests/cmd-smoke.sh +310 -0
- package/integrations/claude-code/tests/hook-smoke.sh +1412 -0
- package/package.json +4 -2
- package/plugins/codexa/.codex-plugin/plugin.json +1 -1
|
@@ -1,15 +1,19 @@
|
|
|
1
|
-
export type ShellControlOperator = "start" | "&&" | "||" | "|" | ";";
|
|
1
|
+
export type ShellControlOperator = "start" | "&&" | "||" | "|" | ";" | "&";
|
|
2
2
|
export type ShellTruthiness = "true" | "false" | "unknown";
|
|
3
3
|
export declare function splitShellSequence(command: string): Array<{
|
|
4
4
|
text: string;
|
|
5
5
|
operator: ShellControlOperator;
|
|
6
6
|
}>;
|
|
7
|
+
export declare function stripCommandSubstitutions(command: string): string;
|
|
8
|
+
export declare function commandSubstitutionContents(command: string): string;
|
|
9
|
+
export declare function hasBalancedQuotes(command: string): boolean;
|
|
7
10
|
export declare function segmentTruthiness(segment: string): ShellTruthiness;
|
|
8
11
|
export declare function shellWords(value: string): string[];
|
|
9
12
|
export declare function shellQuote(value: string): string;
|
|
10
13
|
export declare function stripQuotes(value: string): string;
|
|
11
14
|
export declare function isNonRunningCommand(words: string[]): boolean;
|
|
12
15
|
export declare function shellWrappedCommand(words: string[]): string | undefined;
|
|
16
|
+
export declare function shellWrapperBodyIsAmbiguous(words: string[]): boolean;
|
|
13
17
|
export declare function hasNonRunningJavaScriptTestArg(args: string[]): boolean;
|
|
14
18
|
export declare function hasNonRunningPythonTestArg(args: string[]): boolean;
|
|
15
19
|
export declare function hasNonRunningCommandArg(args: string[]): boolean;
|
|
@@ -3,6 +3,7 @@ export function splitShellSequence(command) {
|
|
|
3
3
|
let quote;
|
|
4
4
|
let current = "";
|
|
5
5
|
let operator = "start";
|
|
6
|
+
command = stripCommentsAndHeredocs(command);
|
|
6
7
|
for (let index = 0; index < command.length; index += 1) {
|
|
7
8
|
const char = command[index];
|
|
8
9
|
const next = command[index + 1];
|
|
@@ -15,24 +16,38 @@ export function splitShellSequence(command) {
|
|
|
15
16
|
if (current.trim()) {
|
|
16
17
|
segments.push({ text: current.trim(), operator });
|
|
17
18
|
}
|
|
19
|
+
else if (operator === "&") {
|
|
20
|
+
// A pending background marker must survive a following separator
|
|
21
|
+
// (`cmd &\n`): flush it before the operator is overwritten, or the
|
|
22
|
+
// backgrounded runner would lose its masking.
|
|
23
|
+
segments.push({ text: "", operator });
|
|
24
|
+
}
|
|
18
25
|
operator = char === "&" ? "&&" : "||";
|
|
19
26
|
current = "";
|
|
20
27
|
index += 1;
|
|
21
28
|
continue;
|
|
22
29
|
}
|
|
23
|
-
|
|
30
|
+
// A bare `&` backgrounds the preceding command, decoupling its exit code, in
|
|
31
|
+
// every position EXCEPT a redirection — like a real shell, `cmd&next` and
|
|
32
|
+
// `cmd&` background `cmd` regardless of surrounding whitespace. It is not a
|
|
33
|
+
// background only for `2>&1`/`>&2` (prev is `<`/`>`/`&`), `&>file` (next is
|
|
34
|
+
// `>`), the `&&` form (handled above), or an escaped `\&` (prev is `\`).
|
|
35
|
+
// Unquoted newlines terminate a command just like `;`.
|
|
36
|
+
const prev = command[index - 1];
|
|
37
|
+
const backgroundAmp = char === "&" && prev !== undefined && !/[<>&\\]/u.test(prev) && next !== ">";
|
|
38
|
+
if (!quote && (char === "|" || char === ";" || char === "\n" || char === "\r" || backgroundAmp)) {
|
|
24
39
|
if (current.trim()) {
|
|
25
40
|
segments.push({ text: current.trim(), operator });
|
|
26
41
|
}
|
|
27
|
-
operator
|
|
28
|
-
|
|
29
|
-
continue;
|
|
30
|
-
}
|
|
31
|
-
if (!quote && char === ";") {
|
|
32
|
-
if (current.trim()) {
|
|
33
|
-
segments.push({ text: current.trim(), operator });
|
|
42
|
+
else if (operator === "&" && char !== "&") {
|
|
43
|
+
segments.push({ text: "", operator });
|
|
34
44
|
}
|
|
35
|
-
operator
|
|
45
|
+
else if ((char === "\n" || char === "\r") && (operator === "&&" || operator === "||" || operator === "|")) {
|
|
46
|
+
// Line continuation: `cmd &&\n next` — the newline does not terminate
|
|
47
|
+
// the command; the pending operator still binds the next segment.
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
operator = char === "|" ? "|" : char === "&" ? "&" : ";";
|
|
36
51
|
current = "";
|
|
37
52
|
continue;
|
|
38
53
|
}
|
|
@@ -41,8 +56,253 @@ export function splitShellSequence(command) {
|
|
|
41
56
|
if (current.trim()) {
|
|
42
57
|
segments.push({ text: current.trim(), operator });
|
|
43
58
|
}
|
|
59
|
+
else if (operator === "&") {
|
|
60
|
+
// Trailing `&` (e.g. `npm test &`) — preserve the background marker so
|
|
61
|
+
// callers can see the preceding runner's exit was decoupled.
|
|
62
|
+
segments.push({ text: "", operator });
|
|
63
|
+
}
|
|
44
64
|
return segments;
|
|
45
65
|
}
|
|
66
|
+
// Strip what a tokenizer must not mistake for commands: unquoted `#` comments
|
|
67
|
+
// (to end of line) and heredoc BODIES (`cat <<EOF ... EOF`). Both are removed
|
|
68
|
+
// in a single source-order pass so a `<<WORD` hidden inside a comment is never
|
|
69
|
+
// read as a real marker, and a comment can never absorb a pending operator.
|
|
70
|
+
// Quoting and `$(( ))` arithmetic are tracked so `2>&1`-style content, `||#`
|
|
71
|
+
// glued comments, `${#var}`, and `$((1 << 2))` are handled correctly. Dropped
|
|
72
|
+
// text only ever reduces credit (fail closed). Newlines are preserved as
|
|
73
|
+
// separators/continuations for the caller.
|
|
74
|
+
function stripCommentsAndHeredocs(command) {
|
|
75
|
+
if (!command.includes("#") && !command.includes("<<")) {
|
|
76
|
+
return command;
|
|
77
|
+
}
|
|
78
|
+
let out = "";
|
|
79
|
+
let quote;
|
|
80
|
+
let pos = 0;
|
|
81
|
+
while (pos < command.length) {
|
|
82
|
+
const newline = command.indexOf("\n", pos);
|
|
83
|
+
const hasNewline = newline !== -1;
|
|
84
|
+
const lineEnd = hasNewline ? newline : command.length;
|
|
85
|
+
const scanned = scanShellLine(command.slice(pos, lineEnd), quote);
|
|
86
|
+
quote = scanned.quote;
|
|
87
|
+
out += scanned.kept;
|
|
88
|
+
if (hasNewline) {
|
|
89
|
+
out += "\n";
|
|
90
|
+
}
|
|
91
|
+
pos = lineEnd + (hasNewline ? 1 : 0);
|
|
92
|
+
// Drop the body of each heredoc opened on this line, in order (`cmd <<A <<B`
|
|
93
|
+
// reads body A then body B). The delimiter line ends the body — leading tabs
|
|
94
|
+
// are stripped only for the `<<-` form, matching bash.
|
|
95
|
+
for (const marker of scanned.markers) {
|
|
96
|
+
while (pos < command.length) {
|
|
97
|
+
const bodyEnd = command.indexOf("\n", pos);
|
|
98
|
+
const hasBody = bodyEnd !== -1;
|
|
99
|
+
const bodyLine = command.slice(pos, hasBody ? bodyEnd : command.length).replace(/\r$/u, "");
|
|
100
|
+
pos = (hasBody ? bodyEnd : command.length) + (hasBody ? 1 : 0);
|
|
101
|
+
if ((marker.dash ? bodyLine.replace(/^\t+/u, "") : bodyLine) === marker.delimiter) {
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
if (!hasBody) {
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
112
|
+
function scanShellLine(line, quoteIn) {
|
|
113
|
+
let kept = "";
|
|
114
|
+
let quote = quoteIn;
|
|
115
|
+
let arithParens = 0;
|
|
116
|
+
const markers = [];
|
|
117
|
+
for (let i = 0; i < line.length; i += 1) {
|
|
118
|
+
const char = line[i];
|
|
119
|
+
if (quote) {
|
|
120
|
+
kept += char;
|
|
121
|
+
if (char === quote && line[i - 1] !== "\\") {
|
|
122
|
+
quote = undefined;
|
|
123
|
+
}
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
if (char === "'" || char === '"') {
|
|
127
|
+
quote = char;
|
|
128
|
+
kept += char;
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
// A `#` only starts a comment at a word boundary (start, whitespace, or an
|
|
132
|
+
// operator) — not inside `file#1` or `${X#pat}`.
|
|
133
|
+
if (char === "#" && (i === 0 || /[\s;|&]/u.test(line[i - 1]))) {
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
if (char === "$" && line[i + 1] === "(" && line[i + 2] === "(") {
|
|
137
|
+
arithParens += 2;
|
|
138
|
+
kept += "$((";
|
|
139
|
+
i += 2;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (arithParens > 0) {
|
|
143
|
+
if (char === "(") {
|
|
144
|
+
arithParens += 1;
|
|
145
|
+
}
|
|
146
|
+
else if (char === ")") {
|
|
147
|
+
arithParens -= 1;
|
|
148
|
+
}
|
|
149
|
+
kept += char;
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (char === "<" && line[i + 1] === "<") {
|
|
153
|
+
if (line[i + 2] === "<") {
|
|
154
|
+
kept += "<<<";
|
|
155
|
+
i += 2;
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
// Match the FULL bash delimiter word (any run of non-blank shell-word
|
|
159
|
+
// chars: `EOF`, `EOF-1`, `EOF.txt`, digit-led `1-2`), so the body
|
|
160
|
+
// terminates only on an exact full-word line — capturing just a `\w+`
|
|
161
|
+
// prefix would end the body early and re-expose its data as commands.
|
|
162
|
+
// Arithmetic `$((1 << 2))` is already consumed above, so this cannot
|
|
163
|
+
// misfire on a shift.
|
|
164
|
+
const marker = /^<<(-?)[ \t]*(['"]?)([^\s'"`<>|&;()]+)\2/u.exec(line.slice(i));
|
|
165
|
+
if (marker) {
|
|
166
|
+
markers.push({ delimiter: marker[3], dash: marker[1] === "-" });
|
|
167
|
+
kept += marker[0];
|
|
168
|
+
i += marker[0].length - 1;
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
kept += char;
|
|
173
|
+
}
|
|
174
|
+
return { kept, quote, markers };
|
|
175
|
+
}
|
|
176
|
+
// Remove `$(...)` (depth-tracked) and backtick command-substitution spans that
|
|
177
|
+
// are not single-quoted literals. A command inside a substitution never directly
|
|
178
|
+
// decides the script's exit, so name-credit matching must not see it; the text
|
|
179
|
+
// outside substitutions is returned intact. Follows shell quoting: `'` is a
|
|
180
|
+
// literal inside double quotes (an apostrophe must not flip quote state), `"`
|
|
181
|
+
// is a literal inside single quotes, substitutions still expand inside double
|
|
182
|
+
// quotes, and quotes inside a substitution shield its parens from depth
|
|
183
|
+
// counting. Unbalanced spans strip to the end (fail closed: less text to match
|
|
184
|
+
// means less credit).
|
|
185
|
+
export function stripCommandSubstitutions(command) {
|
|
186
|
+
return scanCommandSubstitutions(command).outside;
|
|
187
|
+
}
|
|
188
|
+
// The text INSIDE `$(...)`/backtick substitutions — what a script discards when
|
|
189
|
+
// a non-running carrier wraps them. Callers use it to ask whether the discarded
|
|
190
|
+
// command looks like a named check.
|
|
191
|
+
export function commandSubstitutionContents(command) {
|
|
192
|
+
return scanCommandSubstitutions(command).inside;
|
|
193
|
+
}
|
|
194
|
+
// Each removed substitution leaves a sentinel token in the outside text so
|
|
195
|
+
// stripping can never glue two surrounding words into a phrase that was not in
|
|
196
|
+
// the command (`vite $(X) build` must not fabricate a `vite build` match).
|
|
197
|
+
const SUBSTITUTION_SENTINEL = "__codexa_substitution__";
|
|
198
|
+
function scanCommandSubstitutions(command) {
|
|
199
|
+
let outside = "";
|
|
200
|
+
let inside = "";
|
|
201
|
+
let quote;
|
|
202
|
+
let outerQuote;
|
|
203
|
+
let backtick = false;
|
|
204
|
+
let depth = 0;
|
|
205
|
+
for (let index = 0; index < command.length; index += 1) {
|
|
206
|
+
const char = command[index];
|
|
207
|
+
if (char === "\\" && quote !== "'") {
|
|
208
|
+
if (depth === 0 && !backtick) {
|
|
209
|
+
outside += char + (command[index + 1] ?? "");
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
inside += char + (command[index + 1] ?? "");
|
|
213
|
+
}
|
|
214
|
+
index += 1;
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
if ((char === "'" || char === '"') && (quote === undefined || quote === char)) {
|
|
218
|
+
quote = quote === char ? undefined : char;
|
|
219
|
+
if (depth === 0 && !backtick) {
|
|
220
|
+
outside += char;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
inside += char;
|
|
224
|
+
}
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (quote === "'") {
|
|
228
|
+
if (depth === 0 && !backtick) {
|
|
229
|
+
outside += char;
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
inside += char;
|
|
233
|
+
}
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
if (char === "`") {
|
|
237
|
+
backtick = !backtick;
|
|
238
|
+
if (!backtick) {
|
|
239
|
+
outside += SUBSTITUTION_SENTINEL;
|
|
240
|
+
inside += "\n";
|
|
241
|
+
}
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
if (backtick) {
|
|
245
|
+
inside += char;
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
if (char === "$" && command[index + 1] === "(") {
|
|
249
|
+
if (depth === 0) {
|
|
250
|
+
// The substitution opens a fresh quoting context; remember the outer
|
|
251
|
+
// double-quote state so it resumes when the substitution closes.
|
|
252
|
+
outerQuote = quote;
|
|
253
|
+
quote = undefined;
|
|
254
|
+
}
|
|
255
|
+
depth += 1;
|
|
256
|
+
index += 1;
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
if (depth > 0) {
|
|
260
|
+
if (quote === undefined) {
|
|
261
|
+
if (char === "(") {
|
|
262
|
+
depth += 1;
|
|
263
|
+
}
|
|
264
|
+
else if (char === ")") {
|
|
265
|
+
depth -= 1;
|
|
266
|
+
if (depth === 0) {
|
|
267
|
+
quote = outerQuote;
|
|
268
|
+
outside += SUBSTITUTION_SENTINEL;
|
|
269
|
+
inside += "\n";
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
inside += char;
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
outside += char;
|
|
278
|
+
}
|
|
279
|
+
if (depth > 0 || backtick) {
|
|
280
|
+
// Unbalanced span stripped to the end — still mark that one was here.
|
|
281
|
+
outside += SUBSTITUTION_SENTINEL;
|
|
282
|
+
}
|
|
283
|
+
return { outside, inside };
|
|
284
|
+
}
|
|
285
|
+
// True when single/double quotes in a command string are balanced. The word
|
|
286
|
+
// tokenizer cannot represent nested quoting, so a doubly shell-wrapped command
|
|
287
|
+
// unwraps to a mangled, unbalanced inner string whose masking operators are lost
|
|
288
|
+
// on re-tokenization; callers treat an unbalanced result as unverifiable.
|
|
289
|
+
export function hasBalancedQuotes(command) {
|
|
290
|
+
let quote;
|
|
291
|
+
for (let index = 0; index < command.length; index += 1) {
|
|
292
|
+
const char = command[index];
|
|
293
|
+
if (char === "\\" && quote !== "'") {
|
|
294
|
+
index += 1;
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
if (quote === undefined && (char === "'" || char === '"')) {
|
|
298
|
+
quote = char;
|
|
299
|
+
}
|
|
300
|
+
else if (char === quote) {
|
|
301
|
+
quote = undefined;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return quote === undefined;
|
|
305
|
+
}
|
|
46
306
|
export function segmentTruthiness(segment) {
|
|
47
307
|
const words = stripShellControlWords(stripLeadingEnvironment(shellWords(segment)));
|
|
48
308
|
const first = words[0];
|
|
@@ -88,6 +348,25 @@ export function shellWrappedCommand(words) {
|
|
|
88
348
|
}
|
|
89
349
|
return undefined;
|
|
90
350
|
}
|
|
351
|
+
// True when a shell wrapper's `-c` body could not be cleanly isolated. A
|
|
352
|
+
// well-formed `sh -c "<body>"` keeps the whole body in one token, so any extra
|
|
353
|
+
// tokens after it mean the tokenizer split a body containing escaped/nested
|
|
354
|
+
// quotes it cannot represent (e.g. `bash -lc "npm test --grep \"x\" || true"`).
|
|
355
|
+
// The extracted body is then a truncated prefix that silently drops a trailing
|
|
356
|
+
// mask, so callers must fail closed instead of analyzing it.
|
|
357
|
+
export function shellWrapperBodyIsAmbiguous(words) {
|
|
358
|
+
const first = words[0];
|
|
359
|
+
if (first !== "bash" && first !== "sh" && first !== "zsh") {
|
|
360
|
+
return false;
|
|
361
|
+
}
|
|
362
|
+
for (let index = 1; index < words.length; index += 1) {
|
|
363
|
+
const word = words[index];
|
|
364
|
+
if (word === "-c" || word === "-lc" || word === "-cl" || (word.startsWith("-") && word.includes("c"))) {
|
|
365
|
+
return index + 2 < words.length;
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
return false;
|
|
369
|
+
}
|
|
91
370
|
export function hasNonRunningJavaScriptTestArg(args) {
|
|
92
371
|
return args.some((arg) => ["--version", "-v", "-V", "--help", "-h", "help"].includes(arg));
|
|
93
372
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/query/verification/shell.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shell.js","sourceRoot":"","sources":["../../../src/query/verification/shell.ts"],"names":[],"mappings":"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"}
|