@dotsetlabs/tollgate 0.2.2 → 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 +138 -0
- package/dist/analyzers/filesystem.d.ts +5 -0
- package/dist/analyzers/filesystem.d.ts.map +1 -1
- package/dist/analyzers/filesystem.js +61 -7
- package/dist/analyzers/filesystem.js.map +1 -1
- package/dist/analyzers/loader.d.ts +5 -0
- package/dist/analyzers/loader.d.ts.map +1 -1
- package/dist/analyzers/loader.js +112 -6
- package/dist/analyzers/loader.js.map +1 -1
- package/dist/analyzers/prompt-injection.d.ts +1 -0
- package/dist/analyzers/prompt-injection.d.ts.map +1 -1
- package/dist/analyzers/prompt-injection.js +48 -2
- package/dist/analyzers/prompt-injection.js.map +1 -1
- package/dist/analyzers/shell.d.ts +8 -0
- package/dist/analyzers/shell.d.ts.map +1 -1
- package/dist/analyzers/shell.js +109 -8
- package/dist/analyzers/shell.js.map +1 -1
- package/dist/analyzers/sql.d.ts.map +1 -1
- package/dist/analyzers/sql.js +8 -7
- package/dist/analyzers/sql.js.map +1 -1
- package/dist/approval/interactive.d.ts +1 -1
- package/dist/approval/interactive.d.ts.map +1 -1
- package/dist/approval/interactive.js +13 -1
- package/dist/approval/interactive.js.map +1 -1
- package/dist/approval/rate-limiter.d.ts +115 -0
- package/dist/approval/rate-limiter.d.ts.map +1 -0
- package/dist/approval/rate-limiter.js +200 -0
- package/dist/approval/rate-limiter.js.map +1 -0
- package/dist/approval/url-validator.d.ts +51 -0
- package/dist/approval/url-validator.d.ts.map +1 -0
- package/dist/approval/url-validator.js +184 -0
- package/dist/approval/url-validator.js.map +1 -0
- package/dist/approval/webhook.d.ts +48 -0
- package/dist/approval/webhook.d.ts.map +1 -1
- package/dist/approval/webhook.js +89 -0
- package/dist/approval/webhook.js.map +1 -1
- package/dist/audit/integrity.d.ts +107 -0
- package/dist/audit/integrity.d.ts.map +1 -0
- package/dist/audit/integrity.js +191 -0
- package/dist/audit/integrity.js.map +1 -0
- package/dist/audit/logger.d.ts.map +1 -1
- package/dist/audit/logger.js +6 -5
- package/dist/audit/logger.js.map +1 -1
- package/dist/audit/redaction.js +6 -4
- package/dist/audit/redaction.js.map +1 -1
- package/dist/cli/commands/guard.d.ts +97 -0
- package/dist/cli/commands/guard.d.ts.map +1 -0
- package/dist/cli/commands/guard.js +456 -0
- package/dist/cli/commands/guard.js.map +1 -0
- package/dist/cli/commands/serve.js +1 -1
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/input-validation.d.ts +83 -0
- package/dist/cli/input-validation.d.ts.map +1 -0
- package/dist/cli/input-validation.js +237 -0
- package/dist/cli/input-validation.js.map +1 -0
- package/dist/cli/ui.js +2 -2
- package/dist/cli/ui.js.map +1 -1
- package/dist/guard/alternatives/index.d.ts +68 -0
- package/dist/guard/alternatives/index.d.ts.map +1 -0
- package/dist/guard/alternatives/index.js +224 -0
- package/dist/guard/alternatives/index.js.map +1 -0
- package/dist/guard/alternatives/registry.d.ts +16 -0
- package/dist/guard/alternatives/registry.d.ts.map +1 -0
- package/dist/guard/alternatives/registry.js +518 -0
- package/dist/guard/alternatives/registry.js.map +1 -0
- package/dist/guard/alternatives/types.d.ts +86 -0
- package/dist/guard/alternatives/types.d.ts.map +1 -0
- package/dist/guard/alternatives/types.js +5 -0
- package/dist/guard/alternatives/types.js.map +1 -0
- package/dist/guard/approval/enhanced-terminal.d.ts +110 -0
- package/dist/guard/approval/enhanced-terminal.d.ts.map +1 -0
- package/dist/guard/approval/enhanced-terminal.js +387 -0
- package/dist/guard/approval/enhanced-terminal.js.map +1 -0
- package/dist/guard/config.d.ts +80 -0
- package/dist/guard/config.d.ts.map +1 -0
- package/dist/guard/config.js +260 -0
- package/dist/guard/config.js.map +1 -0
- package/dist/guard/context/directory.d.ts +35 -0
- package/dist/guard/context/directory.d.ts.map +1 -0
- package/dist/guard/context/directory.js +243 -0
- package/dist/guard/context/directory.js.map +1 -0
- package/dist/guard/context/environment.d.ts +31 -0
- package/dist/guard/context/environment.d.ts.map +1 -0
- package/dist/guard/context/environment.js +204 -0
- package/dist/guard/context/environment.js.map +1 -0
- package/dist/guard/context/git.d.ts +52 -0
- package/dist/guard/context/git.d.ts.map +1 -0
- package/dist/guard/context/git.js +278 -0
- package/dist/guard/context/git.js.map +1 -0
- package/dist/guard/context/index.d.ts +64 -0
- package/dist/guard/context/index.d.ts.map +1 -0
- package/dist/guard/context/index.js +227 -0
- package/dist/guard/context/index.js.map +1 -0
- package/dist/guard/context/project.d.ts +47 -0
- package/dist/guard/context/project.d.ts.map +1 -0
- package/dist/guard/context/project.js +281 -0
- package/dist/guard/context/project.js.map +1 -0
- package/dist/guard/context/types.d.ts +152 -0
- package/dist/guard/context/types.d.ts.map +1 -0
- package/dist/guard/context/types.js +7 -0
- package/dist/guard/context/types.js.map +1 -0
- package/dist/guard/engine.d.ts +107 -0
- package/dist/guard/engine.d.ts.map +1 -0
- package/dist/guard/engine.js +430 -0
- package/dist/guard/engine.js.map +1 -0
- package/dist/guard/enhanced-engine.d.ts +151 -0
- package/dist/guard/enhanced-engine.d.ts.map +1 -0
- package/dist/guard/enhanced-engine.js +622 -0
- package/dist/guard/enhanced-engine.js.map +1 -0
- package/dist/guard/hooks/index.d.ts +50 -0
- package/dist/guard/hooks/index.d.ts.map +1 -0
- package/dist/guard/hooks/index.js +325 -0
- package/dist/guard/hooks/index.js.map +1 -0
- package/dist/guard/index.d.ts +29 -0
- package/dist/guard/index.d.ts.map +1 -0
- package/dist/guard/index.js +31 -0
- package/dist/guard/index.js.map +1 -0
- package/dist/guard/learning/index.d.ts +136 -0
- package/dist/guard/learning/index.d.ts.map +1 -0
- package/dist/guard/learning/index.js +314 -0
- package/dist/guard/learning/index.js.map +1 -0
- package/dist/guard/learning/pattern-extractor.d.ts +50 -0
- package/dist/guard/learning/pattern-extractor.d.ts.map +1 -0
- package/dist/guard/learning/pattern-extractor.js +372 -0
- package/dist/guard/learning/pattern-extractor.js.map +1 -0
- package/dist/guard/learning/rule-suggester.d.ts +67 -0
- package/dist/guard/learning/rule-suggester.d.ts.map +1 -0
- package/dist/guard/learning/rule-suggester.js +345 -0
- package/dist/guard/learning/rule-suggester.js.map +1 -0
- package/dist/guard/learning/types.d.ts +211 -0
- package/dist/guard/learning/types.d.ts.map +1 -0
- package/dist/guard/learning/types.js +18 -0
- package/dist/guard/learning/types.js.map +1 -0
- package/dist/guard/preview/effects.d.ts +15 -0
- package/dist/guard/preview/effects.d.ts.map +1 -0
- package/dist/guard/preview/effects.js +413 -0
- package/dist/guard/preview/effects.js.map +1 -0
- package/dist/guard/preview/index.d.ts +49 -0
- package/dist/guard/preview/index.d.ts.map +1 -0
- package/dist/guard/preview/index.js +196 -0
- package/dist/guard/preview/index.js.map +1 -0
- package/dist/guard/preview/parser.d.ts +34 -0
- package/dist/guard/preview/parser.d.ts.map +1 -0
- package/dist/guard/preview/parser.js +292 -0
- package/dist/guard/preview/parser.js.map +1 -0
- package/dist/guard/preview/types.d.ts +140 -0
- package/dist/guard/preview/types.d.ts.map +1 -0
- package/dist/guard/preview/types.js +5 -0
- package/dist/guard/preview/types.js.map +1 -0
- package/dist/guard/reversibility/index.d.ts +88 -0
- package/dist/guard/reversibility/index.d.ts.map +1 -0
- package/dist/guard/reversibility/index.js +310 -0
- package/dist/guard/reversibility/index.js.map +1 -0
- package/dist/guard/types.d.ts +192 -0
- package/dist/guard/types.d.ts.map +1 -0
- package/dist/guard/types.js +8 -0
- package/dist/guard/types.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -1
- package/dist/orchestrator/manager.d.ts.map +1 -1
- package/dist/orchestrator/manager.js +6 -1
- package/dist/orchestrator/manager.js.map +1 -1
- package/dist/policy/engine.d.ts.map +1 -1
- package/dist/policy/engine.js +11 -3
- package/dist/policy/engine.js.map +1 -1
- package/dist/policy/parser.d.ts.map +1 -1
- package/dist/policy/parser.js +3 -0
- package/dist/policy/parser.js.map +1 -1
- package/dist/proxy/server.d.ts.map +1 -1
- package/dist/proxy/server.js +8 -6
- package/dist/proxy/server.js.map +1 -1
- package/dist/session/manager.d.ts +2 -2
- package/dist/session/manager.d.ts.map +1 -1
- package/dist/session/manager.js +106 -88
- package/dist/session/manager.js.map +1 -1
- package/dist/session/signing.d.ts +88 -0
- package/dist/session/signing.d.ts.map +1 -0
- package/dist/session/signing.js +166 -0
- package/dist/session/signing.js.map +1 -0
- package/dist/session/types.d.ts +2 -0
- package/dist/session/types.d.ts.map +1 -1
- package/dist/session/types.js.map +1 -1
- package/dist/utils/security-logger.d.ts +146 -0
- package/dist/utils/security-logger.d.ts.map +1 -0
- package/dist/utils/security-logger.js +222 -0
- package/dist/utils/security-logger.js.map +1 -0
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +7 -1
- package/dist/wizard.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/guard/preview/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Parser for Shell Guardian
|
|
3
|
+
*
|
|
4
|
+
* Parses shell commands into structured representations.
|
|
5
|
+
*/
|
|
6
|
+
import type { ParsedCommand } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Parse a shell command into a structured representation.
|
|
9
|
+
*
|
|
10
|
+
* @param command - The command string to parse
|
|
11
|
+
* @returns Parsed command structure
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseCommand(command: string): ParsedCommand;
|
|
14
|
+
/**
|
|
15
|
+
* Check if command has a specific flag.
|
|
16
|
+
*/
|
|
17
|
+
export declare function hasFlag(parsed: ParsedCommand, flagName: string): boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Get flag value if present.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getFlagValue(parsed: ParsedCommand, flagName: string): string | undefined;
|
|
22
|
+
/**
|
|
23
|
+
* Check if command is recursive (based on common flags).
|
|
24
|
+
*/
|
|
25
|
+
export declare function isRecursive(parsed: ParsedCommand): boolean;
|
|
26
|
+
/**
|
|
27
|
+
* Check if command has force flag.
|
|
28
|
+
*/
|
|
29
|
+
export declare function hasForceFlag(parsed: ParsedCommand): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Get the full command with subcommand.
|
|
32
|
+
*/
|
|
33
|
+
export declare function getFullCommand(parsed: ParsedCommand): string;
|
|
34
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/guard/preview/parser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,YAAY,CAAC;AAWtE;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,CAc3D;AAgQD;;GAEG;AACH,wBAAgB,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAKxE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAE1D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAE3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAK5D"}
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command Parser for Shell Guardian
|
|
3
|
+
*
|
|
4
|
+
* Parses shell commands into structured representations.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Commands that typically have subcommands.
|
|
8
|
+
*/
|
|
9
|
+
const SUBCOMMAND_COMMANDS = new Set([
|
|
10
|
+
'git', 'docker', 'kubectl', 'npm', 'yarn', 'pnpm', 'cargo', 'go',
|
|
11
|
+
'apt', 'apt-get', 'brew', 'pip', 'pip3', 'gem', 'bundle',
|
|
12
|
+
'systemctl', 'journalctl', 'service',
|
|
13
|
+
]);
|
|
14
|
+
/**
|
|
15
|
+
* Parse a shell command into a structured representation.
|
|
16
|
+
*
|
|
17
|
+
* @param command - The command string to parse
|
|
18
|
+
* @returns Parsed command structure
|
|
19
|
+
*/
|
|
20
|
+
export function parseCommand(command) {
|
|
21
|
+
const trimmed = command.trim();
|
|
22
|
+
// Handle pipes
|
|
23
|
+
const pipeSegments = splitOnPipes(trimmed);
|
|
24
|
+
if (pipeSegments.length > 1) {
|
|
25
|
+
// Parse first command and remaining as pipes
|
|
26
|
+
const first = parseSimpleCommand(pipeSegments[0]);
|
|
27
|
+
first.pipes = pipeSegments.slice(1).map(seg => parseSimpleCommand(seg));
|
|
28
|
+
return first;
|
|
29
|
+
}
|
|
30
|
+
return parseSimpleCommand(trimmed);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Split command on pipes, respecting quotes.
|
|
34
|
+
*/
|
|
35
|
+
function splitOnPipes(command) {
|
|
36
|
+
const segments = [];
|
|
37
|
+
let current = '';
|
|
38
|
+
let inSingleQuote = false;
|
|
39
|
+
let inDoubleQuote = false;
|
|
40
|
+
let escape = false;
|
|
41
|
+
for (let i = 0; i < command.length; i++) {
|
|
42
|
+
const char = command[i];
|
|
43
|
+
if (escape) {
|
|
44
|
+
current += char;
|
|
45
|
+
escape = false;
|
|
46
|
+
continue;
|
|
47
|
+
}
|
|
48
|
+
if (char === '\\') {
|
|
49
|
+
escape = true;
|
|
50
|
+
current += char;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (char === "'" && !inDoubleQuote) {
|
|
54
|
+
inSingleQuote = !inSingleQuote;
|
|
55
|
+
current += char;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (char === '"' && !inSingleQuote) {
|
|
59
|
+
inDoubleQuote = !inDoubleQuote;
|
|
60
|
+
current += char;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (char === '|' && !inSingleQuote && !inDoubleQuote) {
|
|
64
|
+
segments.push(current.trim());
|
|
65
|
+
current = '';
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
current += char;
|
|
69
|
+
}
|
|
70
|
+
if (current.trim()) {
|
|
71
|
+
segments.push(current.trim());
|
|
72
|
+
}
|
|
73
|
+
return segments;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Parse a simple command (no pipes).
|
|
77
|
+
*/
|
|
78
|
+
function parseSimpleCommand(command) {
|
|
79
|
+
const tokens = tokenize(command);
|
|
80
|
+
const redirects = extractRedirects(tokens);
|
|
81
|
+
const filteredTokens = tokens.filter(t => !isRedirectToken(t));
|
|
82
|
+
// Check for sudo
|
|
83
|
+
let hasSudo = false;
|
|
84
|
+
let startIndex = 0;
|
|
85
|
+
if (filteredTokens[0] === 'sudo' || filteredTokens[0] === 'doas') {
|
|
86
|
+
hasSudo = true;
|
|
87
|
+
startIndex = 1;
|
|
88
|
+
// Skip sudo flags
|
|
89
|
+
while (startIndex < filteredTokens.length && filteredTokens[startIndex].startsWith('-')) {
|
|
90
|
+
startIndex++;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// Get executable
|
|
94
|
+
const executable = filteredTokens[startIndex] || '';
|
|
95
|
+
// Check for subcommand
|
|
96
|
+
let subcommand;
|
|
97
|
+
let argsStartIndex = startIndex + 1;
|
|
98
|
+
if (SUBCOMMAND_COMMANDS.has(executable) && filteredTokens[startIndex + 1]) {
|
|
99
|
+
const potentialSubcmd = filteredTokens[startIndex + 1];
|
|
100
|
+
if (!potentialSubcmd.startsWith('-')) {
|
|
101
|
+
subcommand = potentialSubcmd;
|
|
102
|
+
argsStartIndex = startIndex + 2;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
// Parse flags and positional args
|
|
106
|
+
const flags = [];
|
|
107
|
+
const positionalArgs = [];
|
|
108
|
+
let i = argsStartIndex;
|
|
109
|
+
while (i < filteredTokens.length) {
|
|
110
|
+
const token = filteredTokens[i];
|
|
111
|
+
if (token === '--') {
|
|
112
|
+
// Everything after -- is positional
|
|
113
|
+
positionalArgs.push(...filteredTokens.slice(i + 1));
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
if (token.startsWith('--')) {
|
|
117
|
+
// Long flag
|
|
118
|
+
const equalIndex = token.indexOf('=');
|
|
119
|
+
if (equalIndex !== -1) {
|
|
120
|
+
flags.push({
|
|
121
|
+
name: token.slice(2, equalIndex),
|
|
122
|
+
value: token.slice(equalIndex + 1),
|
|
123
|
+
type: 'long',
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
flags.push({
|
|
128
|
+
name: token.slice(2),
|
|
129
|
+
type: 'long',
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (token.startsWith('-') && token.length > 1) {
|
|
134
|
+
// Short flag(s)
|
|
135
|
+
const flagChars = token.slice(1);
|
|
136
|
+
for (let j = 0; j < flagChars.length; j++) {
|
|
137
|
+
flags.push({
|
|
138
|
+
name: flagChars[j],
|
|
139
|
+
type: 'short',
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// Positional argument
|
|
145
|
+
positionalArgs.push(stripQuotes(token));
|
|
146
|
+
}
|
|
147
|
+
i++;
|
|
148
|
+
}
|
|
149
|
+
return {
|
|
150
|
+
executable,
|
|
151
|
+
subcommand,
|
|
152
|
+
flags,
|
|
153
|
+
positionalArgs,
|
|
154
|
+
pipes: [],
|
|
155
|
+
redirects,
|
|
156
|
+
original: command,
|
|
157
|
+
hasSudo,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Tokenize command string.
|
|
162
|
+
*/
|
|
163
|
+
function tokenize(command) {
|
|
164
|
+
const tokens = [];
|
|
165
|
+
let current = '';
|
|
166
|
+
let inSingleQuote = false;
|
|
167
|
+
let inDoubleQuote = false;
|
|
168
|
+
let escape = false;
|
|
169
|
+
for (let i = 0; i < command.length; i++) {
|
|
170
|
+
const char = command[i];
|
|
171
|
+
if (escape) {
|
|
172
|
+
current += char;
|
|
173
|
+
escape = false;
|
|
174
|
+
continue;
|
|
175
|
+
}
|
|
176
|
+
if (char === '\\') {
|
|
177
|
+
escape = true;
|
|
178
|
+
current += char;
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (char === "'" && !inDoubleQuote) {
|
|
182
|
+
inSingleQuote = !inSingleQuote;
|
|
183
|
+
current += char;
|
|
184
|
+
continue;
|
|
185
|
+
}
|
|
186
|
+
if (char === '"' && !inSingleQuote) {
|
|
187
|
+
inDoubleQuote = !inDoubleQuote;
|
|
188
|
+
current += char;
|
|
189
|
+
continue;
|
|
190
|
+
}
|
|
191
|
+
if (/\s/.test(char) && !inSingleQuote && !inDoubleQuote) {
|
|
192
|
+
if (current) {
|
|
193
|
+
tokens.push(current);
|
|
194
|
+
current = '';
|
|
195
|
+
}
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
current += char;
|
|
199
|
+
}
|
|
200
|
+
if (current) {
|
|
201
|
+
tokens.push(current);
|
|
202
|
+
}
|
|
203
|
+
return tokens;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Extract redirections from tokens.
|
|
207
|
+
*/
|
|
208
|
+
function extractRedirects(tokens) {
|
|
209
|
+
const redirects = [];
|
|
210
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
211
|
+
const token = tokens[i];
|
|
212
|
+
if (token === '>' || token === '1>') {
|
|
213
|
+
if (tokens[i + 1]) {
|
|
214
|
+
redirects.push({ type: 'stdout', target: tokens[i + 1] });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
else if (token === '>>') {
|
|
218
|
+
if (tokens[i + 1]) {
|
|
219
|
+
redirects.push({ type: 'append', target: tokens[i + 1] });
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
else if (token === '2>') {
|
|
223
|
+
if (tokens[i + 1]) {
|
|
224
|
+
redirects.push({ type: 'stderr', target: tokens[i + 1] });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
else if (token === '<') {
|
|
228
|
+
if (tokens[i + 1]) {
|
|
229
|
+
redirects.push({ type: 'stdin', target: tokens[i + 1] });
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
else if (token.startsWith('>')) {
|
|
233
|
+
redirects.push({ type: 'stdout', target: token.slice(1) });
|
|
234
|
+
}
|
|
235
|
+
else if (token.startsWith('>>')) {
|
|
236
|
+
redirects.push({ type: 'append', target: token.slice(2) });
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
return redirects;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Check if a token is a redirect operator or target.
|
|
243
|
+
*/
|
|
244
|
+
function isRedirectToken(token) {
|
|
245
|
+
return /^[<>]|^[12]?>|^>>/.test(token);
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Strip quotes from a string.
|
|
249
|
+
*/
|
|
250
|
+
function stripQuotes(str) {
|
|
251
|
+
if ((str.startsWith('"') && str.endsWith('"')) ||
|
|
252
|
+
(str.startsWith("'") && str.endsWith("'"))) {
|
|
253
|
+
return str.slice(1, -1);
|
|
254
|
+
}
|
|
255
|
+
return str;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Check if command has a specific flag.
|
|
259
|
+
*/
|
|
260
|
+
export function hasFlag(parsed, flagName) {
|
|
261
|
+
return parsed.flags.some(f => f.name === flagName ||
|
|
262
|
+
(f.type === 'short' && flagName.length === 1 && f.name === flagName));
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Get flag value if present.
|
|
266
|
+
*/
|
|
267
|
+
export function getFlagValue(parsed, flagName) {
|
|
268
|
+
const flag = parsed.flags.find(f => f.name === flagName);
|
|
269
|
+
return flag?.value;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Check if command is recursive (based on common flags).
|
|
273
|
+
*/
|
|
274
|
+
export function isRecursive(parsed) {
|
|
275
|
+
return hasFlag(parsed, 'r') || hasFlag(parsed, 'R') || hasFlag(parsed, 'recursive');
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Check if command has force flag.
|
|
279
|
+
*/
|
|
280
|
+
export function hasForceFlag(parsed) {
|
|
281
|
+
return hasFlag(parsed, 'f') || hasFlag(parsed, 'force');
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Get the full command with subcommand.
|
|
285
|
+
*/
|
|
286
|
+
export function getFullCommand(parsed) {
|
|
287
|
+
if (parsed.subcommand) {
|
|
288
|
+
return `${parsed.executable} ${parsed.subcommand}`;
|
|
289
|
+
}
|
|
290
|
+
return parsed.executable;
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/guard/preview/parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for Command Preview System
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Parsed command structure.
|
|
6
|
+
*/
|
|
7
|
+
export interface ParsedCommand {
|
|
8
|
+
/** The main executable/command */
|
|
9
|
+
executable: string;
|
|
10
|
+
/** Subcommand if applicable (e.g., 'commit' in 'git commit') */
|
|
11
|
+
subcommand?: string;
|
|
12
|
+
/** All flags/options */
|
|
13
|
+
flags: ParsedFlag[];
|
|
14
|
+
/** Positional arguments (non-flag arguments) */
|
|
15
|
+
positionalArgs: string[];
|
|
16
|
+
/** Piped commands */
|
|
17
|
+
pipes: ParsedCommand[];
|
|
18
|
+
/** Redirections */
|
|
19
|
+
redirects: Redirect[];
|
|
20
|
+
/** The original command string */
|
|
21
|
+
original: string;
|
|
22
|
+
/** Whether the command uses sudo */
|
|
23
|
+
hasSudo: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parsed flag from command.
|
|
27
|
+
*/
|
|
28
|
+
export interface ParsedFlag {
|
|
29
|
+
/** Flag name (without dashes) */
|
|
30
|
+
name: string;
|
|
31
|
+
/** Flag value if any */
|
|
32
|
+
value?: string;
|
|
33
|
+
/** Whether it's a short flag (-f) or long flag (--flag) */
|
|
34
|
+
type: 'short' | 'long';
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Redirection in command.
|
|
38
|
+
*/
|
|
39
|
+
export interface Redirect {
|
|
40
|
+
/** Type of redirection */
|
|
41
|
+
type: 'stdout' | 'stderr' | 'stdin' | 'append';
|
|
42
|
+
/** Target file/destination */
|
|
43
|
+
target: string;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Types of effects a command can have.
|
|
47
|
+
*/
|
|
48
|
+
export type EffectType = 'delete' | 'modify' | 'create' | 'read' | 'execute' | 'network' | 'permission' | 'process' | 'unknown';
|
|
49
|
+
/**
|
|
50
|
+
* Confidence level of effect prediction.
|
|
51
|
+
*/
|
|
52
|
+
export type EffectConfidence = 'certain' | 'likely' | 'possible';
|
|
53
|
+
/**
|
|
54
|
+
* Effect a command will have.
|
|
55
|
+
*/
|
|
56
|
+
export interface CommandEffect {
|
|
57
|
+
/** Type of effect */
|
|
58
|
+
type: EffectType;
|
|
59
|
+
/** Target paths/items */
|
|
60
|
+
targets: string[];
|
|
61
|
+
/** Expanded targets from globs */
|
|
62
|
+
expandedTargets?: string[];
|
|
63
|
+
/** Confidence in this effect */
|
|
64
|
+
confidence: EffectConfidence;
|
|
65
|
+
/** Description of the effect */
|
|
66
|
+
description: string;
|
|
67
|
+
/** Whether this effect is recursive */
|
|
68
|
+
recursive?: boolean;
|
|
69
|
+
/** Additional metadata */
|
|
70
|
+
metadata?: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Impact assessment of a command.
|
|
74
|
+
*/
|
|
75
|
+
export interface ImpactAssessment {
|
|
76
|
+
/** Number of files affected */
|
|
77
|
+
filesAffected: number;
|
|
78
|
+
/** Number of directories affected */
|
|
79
|
+
directoriesAffected: number;
|
|
80
|
+
/** Total bytes affected (if calculable) */
|
|
81
|
+
bytesAffected?: number;
|
|
82
|
+
/** Human-readable summary */
|
|
83
|
+
summary: string;
|
|
84
|
+
/** Breakdown by file extension */
|
|
85
|
+
byExtension?: Record<string, number>;
|
|
86
|
+
/** Breakdown by effect type */
|
|
87
|
+
byEffectType?: Record<EffectType, number>;
|
|
88
|
+
/** Whether the impact is fully known */
|
|
89
|
+
isComplete: boolean;
|
|
90
|
+
/** If not complete, why */
|
|
91
|
+
incompleteReason?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Complete preview of a command.
|
|
95
|
+
*/
|
|
96
|
+
export interface CommandPreview {
|
|
97
|
+
/** Parsed command structure */
|
|
98
|
+
parsed: ParsedCommand;
|
|
99
|
+
/** Predicted effects */
|
|
100
|
+
effects: CommandEffect[];
|
|
101
|
+
/** Impact assessment */
|
|
102
|
+
impact: ImpactAssessment;
|
|
103
|
+
/** Time to generate preview in ms */
|
|
104
|
+
generationTimeMs: number;
|
|
105
|
+
/** Warnings during preview generation */
|
|
106
|
+
warnings?: string[];
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Options for preview generation.
|
|
110
|
+
*/
|
|
111
|
+
export interface PreviewOptions {
|
|
112
|
+
/** Maximum files to expand from globs */
|
|
113
|
+
maxExpandedFiles?: number;
|
|
114
|
+
/** Maximum depth for recursive operations */
|
|
115
|
+
maxDepth?: number;
|
|
116
|
+
/** Timeout for expansion operations in ms */
|
|
117
|
+
expansionTimeout?: number;
|
|
118
|
+
/** Whether to calculate sizes */
|
|
119
|
+
calculateSizes?: boolean;
|
|
120
|
+
/** Current working directory */
|
|
121
|
+
cwd?: string;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Known command effects.
|
|
125
|
+
*/
|
|
126
|
+
export interface CommandEffectPattern {
|
|
127
|
+
/** Effect type */
|
|
128
|
+
type: EffectType;
|
|
129
|
+
/** Which positional args are targets (true = all, number[] = specific indices) */
|
|
130
|
+
targetArgs: true | number[];
|
|
131
|
+
/** Whether operation is recursive by default */
|
|
132
|
+
recursive?: boolean;
|
|
133
|
+
/** Flags that make it recursive */
|
|
134
|
+
recursiveFlags?: string[];
|
|
135
|
+
/** Flags that change the effect type */
|
|
136
|
+
effectModifiers?: Record<string, EffectType>;
|
|
137
|
+
/** Description template */
|
|
138
|
+
description: string;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/guard/preview/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/guard/preview/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reversibility Analyzer for Shell Guardian
|
|
3
|
+
*
|
|
4
|
+
* Assesses whether the effects of a command can be undone.
|
|
5
|
+
*/
|
|
6
|
+
import type { CommandEffect } from '../preview/types.js';
|
|
7
|
+
import type { EnhancedGuardContext } from '../context/types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Reversibility level of a command.
|
|
10
|
+
*/
|
|
11
|
+
export type ReversibilityLevel = 'fully-reversible' | 'partially-reversible' | 'difficult-to-reverse' | 'irreversible';
|
|
12
|
+
/**
|
|
13
|
+
* Factor affecting reversibility.
|
|
14
|
+
*/
|
|
15
|
+
export interface ReversibilityFactor {
|
|
16
|
+
/** Description of the factor */
|
|
17
|
+
factor: string;
|
|
18
|
+
/** Whether it increases or decreases reversibility */
|
|
19
|
+
impact: 'increases' | 'decreases';
|
|
20
|
+
/** Detailed explanation */
|
|
21
|
+
details: string;
|
|
22
|
+
/** Weight of this factor (0-1) */
|
|
23
|
+
weight: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Assessment of command reversibility.
|
|
27
|
+
*/
|
|
28
|
+
export interface ReversibilityAssessment {
|
|
29
|
+
/** Overall reversibility level */
|
|
30
|
+
level: ReversibilityLevel;
|
|
31
|
+
/** Overall reversibility score (0-100) */
|
|
32
|
+
score: number;
|
|
33
|
+
/** Human-readable reason */
|
|
34
|
+
reason: string;
|
|
35
|
+
/** Instructions to reverse if possible */
|
|
36
|
+
reverseInstructions?: string;
|
|
37
|
+
/** What would be lost if not reversed */
|
|
38
|
+
potentialLoss?: string;
|
|
39
|
+
/** Factors that influenced the assessment */
|
|
40
|
+
factors: ReversibilityFactor[];
|
|
41
|
+
/** Files that can be recovered */
|
|
42
|
+
recoverableFiles?: string[];
|
|
43
|
+
/** Files that cannot be recovered */
|
|
44
|
+
unrecoverableFiles?: string[];
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Assess reversibility of a command based on its effects.
|
|
48
|
+
*
|
|
49
|
+
* @param command - The original command
|
|
50
|
+
* @param effects - Analyzed command effects
|
|
51
|
+
* @param context - Enhanced guard context
|
|
52
|
+
* @returns Reversibility assessment
|
|
53
|
+
*/
|
|
54
|
+
export declare function assessReversibility(command: string, effects: CommandEffect[], context: EnhancedGuardContext): ReversibilityAssessment;
|
|
55
|
+
/**
|
|
56
|
+
* Get icon for reversibility level.
|
|
57
|
+
*/
|
|
58
|
+
export declare function getReversibilityIcon(level: ReversibilityLevel): string;
|
|
59
|
+
/**
|
|
60
|
+
* Get color for reversibility level (for terminal display).
|
|
61
|
+
*/
|
|
62
|
+
export declare function getReversibilityColor(level: ReversibilityLevel): 'green' | 'yellow' | 'red';
|
|
63
|
+
/**
|
|
64
|
+
* Format reversibility assessment for display.
|
|
65
|
+
*/
|
|
66
|
+
export declare function formatReversibility(assessment: ReversibilityAssessment): string;
|
|
67
|
+
/**
|
|
68
|
+
* Check if operation requires extra warning based on reversibility.
|
|
69
|
+
*/
|
|
70
|
+
export declare function requiresReversibilityWarning(assessment: ReversibilityAssessment): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* ReversibilityAnalyzer class for stateful analysis.
|
|
73
|
+
*/
|
|
74
|
+
export declare class ReversibilityAnalyzer {
|
|
75
|
+
/**
|
|
76
|
+
* Assess reversibility of a command.
|
|
77
|
+
*/
|
|
78
|
+
assess(command: string, effects: CommandEffect[], context: EnhancedGuardContext): ReversibilityAssessment;
|
|
79
|
+
/**
|
|
80
|
+
* Quick check if operation is reversible.
|
|
81
|
+
*/
|
|
82
|
+
isReversible(effects: CommandEffect[], context: EnhancedGuardContext): boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create a reversibility analyzer.
|
|
86
|
+
*/
|
|
87
|
+
export declare function createReversibilityAnalyzer(): ReversibilityAnalyzer;
|
|
88
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/guard/reversibility/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAIhE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAC1B,kBAAkB,GAClB,sBAAsB,GACtB,sBAAsB,GACtB,cAAc,CAAC;AAEnB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,MAAM,EAAE,WAAW,GAAG,WAAW,CAAC;IAClC,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,kCAAkC;IAClC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,yCAAyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,OAAO,EAAE,mBAAmB,EAAE,CAAC;IAC/B,kCAAkC;IAClC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,qCAAqC;IACrC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,EAAE,oBAAoB,GAC5B,uBAAuB,CAuEzB;AAmMD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAOtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,GAAG,QAAQ,GAAG,KAAK,CAO3F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,uBAAuB,GAAG,MAAM,CAgB/E;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,uBAAuB,GAAG,OAAO,CAEzF;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACH,MAAM,CACJ,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,EAAE,oBAAoB,GAC5B,uBAAuB;IAI1B;;OAEG;IACH,YAAY,CACV,OAAO,EAAE,aAAa,EAAE,EACxB,OAAO,EAAE,oBAAoB,GAC5B,OAAO;CAIX;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,qBAAqB,CAEnE"}
|