bugproof 0.1.2 → 0.2.2

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 (69) hide show
  1. package/CHANGELOG.md +61 -5
  2. package/README.md +175 -4
  3. package/dist/capture/env-snapshot.d.ts +53 -0
  4. package/dist/capture/env-snapshot.d.ts.map +1 -0
  5. package/dist/capture/env-snapshot.js +122 -0
  6. package/dist/capture/env-snapshot.js.map +1 -0
  7. package/dist/capture/language-support.d.ts +55 -0
  8. package/dist/capture/language-support.d.ts.map +1 -0
  9. package/dist/capture/language-support.js +505 -0
  10. package/dist/capture/language-support.js.map +1 -0
  11. package/dist/capture/packager.d.ts +9 -0
  12. package/dist/capture/packager.d.ts.map +1 -1
  13. package/dist/capture/packager.js +23 -2
  14. package/dist/capture/packager.js.map +1 -1
  15. package/dist/capture/source-strategy.d.ts +52 -0
  16. package/dist/capture/source-strategy.d.ts.map +1 -0
  17. package/dist/capture/source-strategy.js +227 -0
  18. package/dist/capture/source-strategy.js.map +1 -0
  19. package/dist/cli.js +373 -12
  20. package/dist/cli.js.map +1 -1
  21. package/dist/config/loader.d.ts +44 -0
  22. package/dist/config/loader.d.ts.map +1 -0
  23. package/dist/config/loader.js +87 -0
  24. package/dist/config/loader.js.map +1 -0
  25. package/dist/replay/engine.d.ts +9 -0
  26. package/dist/replay/engine.d.ts.map +1 -1
  27. package/dist/replay/engine.js +29 -3
  28. package/dist/replay/engine.js.map +1 -1
  29. package/dist/replay/hints.d.ts +18 -0
  30. package/dist/replay/hints.d.ts.map +1 -0
  31. package/dist/replay/hints.js +138 -0
  32. package/dist/replay/hints.js.map +1 -0
  33. package/dist/replay/sandbox.js +41 -14
  34. package/dist/replay/sandbox.js.map +1 -1
  35. package/dist/replay/verdict.d.ts.map +1 -1
  36. package/dist/replay/verdict.js +41 -5
  37. package/dist/replay/verdict.js.map +1 -1
  38. package/dist/sandbox/bugbox.d.ts.map +1 -1
  39. package/dist/sandbox/bugbox.js +40 -6
  40. package/dist/sandbox/bugbox.js.map +1 -1
  41. package/dist/sandbox/container.d.ts +81 -0
  42. package/dist/sandbox/container.d.ts.map +1 -0
  43. package/dist/sandbox/container.js +343 -0
  44. package/dist/sandbox/container.js.map +1 -0
  45. package/dist/sandbox/cross-platform.d.ts +59 -0
  46. package/dist/sandbox/cross-platform.d.ts.map +1 -0
  47. package/dist/sandbox/cross-platform.js +330 -0
  48. package/dist/sandbox/cross-platform.js.map +1 -0
  49. package/dist/sandbox/network.d.ts.map +1 -1
  50. package/dist/sandbox/network.js +31 -2
  51. package/dist/sandbox/network.js.map +1 -1
  52. package/dist/share/gist.d.ts +21 -0
  53. package/dist/share/gist.d.ts.map +1 -0
  54. package/dist/share/gist.js +158 -0
  55. package/dist/share/gist.js.map +1 -0
  56. package/dist/utils/archive.d.ts +1 -0
  57. package/dist/utils/archive.d.ts.map +1 -1
  58. package/dist/utils/archive.js +42 -1
  59. package/dist/utils/archive.js.map +1 -1
  60. package/dist/utils/artifact-validation.d.ts +7 -0
  61. package/dist/utils/artifact-validation.d.ts.map +1 -0
  62. package/dist/utils/artifact-validation.js +212 -0
  63. package/dist/utils/artifact-validation.js.map +1 -0
  64. package/dist/utils/dependencies.d.ts +18 -0
  65. package/dist/utils/dependencies.d.ts.map +1 -0
  66. package/dist/utils/dependencies.js +218 -0
  67. package/dist/utils/dependencies.js.map +1 -0
  68. package/package.json +3 -2
  69. package/scripts/postinstall.cjs +38 -5
@@ -0,0 +1,330 @@
1
+ /**
2
+ * BugBox Cross-Platform Layer
3
+ *
4
+ * Handles the scenario where a bug was captured on one OS but replayed on another.
5
+ * Instead of requiring Docker/WSL, this layer translates:
6
+ *
7
+ * 1. Commands — python3 ↔ python, node stays node, bash → cmd/powershell
8
+ * 2. Paths — / ↔ \, $HOME ↔ %USERPROFILE%, path separators in PATH
9
+ * 3. Environment variables — HOME ↔ USERPROFILE, USER ↔ USERNAME, etc.
10
+ * 4. Shell wrappers — bash -c "..." → cmd /c "..." or powershell -c "..."
11
+ *
12
+ * Limitations (honest about what we CAN'T do):
13
+ * - Compiled binaries (ELF on Windows, PE on Linux) → fail with clear message
14
+ * - OS-specific syscalls (inotify, kqueue, epoll) → fail with clear message
15
+ * - Shell scripts with heavy bash-isms → best-effort translation, may fail
16
+ *
17
+ * Philosophy: Translate what's translatable, warn clearly about what isn't.
18
+ */
19
+ import * as os from 'os';
20
+ import * as path from 'path';
21
+ import { spawnSync } from 'child_process';
22
+ /**
23
+ * Detects whether cross-platform translation is needed and assesses compatibility.
24
+ */
25
+ export function detectCrossPlatform(capturedPlatform, replayPlatform) {
26
+ const replay = replayPlatform || os.platform();
27
+ const needsTranslation = capturedPlatform !== replay;
28
+ const warnings = [];
29
+ let likelyCompatible = true;
30
+ if (needsTranslation) {
31
+ warnings.push(`Cross-platform replay: captured on ${platformName(capturedPlatform)}, replaying on ${platformName(replay)}`);
32
+ // Assess compatibility
33
+ if ((capturedPlatform === 'linux' && replay === 'darwin') ||
34
+ (capturedPlatform === 'darwin' && replay === 'linux')) {
35
+ // Unix-to-Unix: high compatibility for scripting languages
36
+ likelyCompatible = true;
37
+ warnings.push('Unix-to-Unix translation: high compatibility expected for scripting languages.');
38
+ }
39
+ else if ((capturedPlatform === 'win32' && (replay === 'linux' || replay === 'darwin')) ||
40
+ ((capturedPlatform === 'linux' || capturedPlatform === 'darwin') && replay === 'win32')) {
41
+ // Cross-family: medium compatibility
42
+ likelyCompatible = true; // Optimistic — we'll catch hard failures in command translation
43
+ warnings.push('Cross-family translation applied. Path separators and commands will be adapted.');
44
+ }
45
+ }
46
+ return { capturedPlatform, replayPlatform: replay, needsTranslation, likelyCompatible, warnings };
47
+ }
48
+ /**
49
+ * Translates a command from the captured platform to the replay platform.
50
+ */
51
+ export function translateCommand(command, capturedPlatform, replayPlatform) {
52
+ const replay = replayPlatform || os.platform();
53
+ const translations = [];
54
+ const blockers = [];
55
+ if (capturedPlatform === replay) {
56
+ return { command, translated: false, translations: [], blockers: [] };
57
+ }
58
+ let translated = [...command];
59
+ // 1. Translate the executable
60
+ translated[0] = translateExecutable(translated[0], capturedPlatform, replay, translations, blockers);
61
+ // 2. Translate shell wrappers
62
+ translated = translateShellWrapper(translated, capturedPlatform, replay, translations);
63
+ // 3. Translate path arguments
64
+ translated = translated.map((arg, i) => {
65
+ if (i === 0)
66
+ return arg; // Already handled
67
+ return translatePathArg(arg, capturedPlatform, replay);
68
+ });
69
+ return {
70
+ command: translated,
71
+ translated: translations.length > 0,
72
+ translations,
73
+ blockers,
74
+ };
75
+ }
76
+ /**
77
+ * Translates environment variables between platforms.
78
+ */
79
+ export function translateEnvironment(env, capturedPlatform, replayPlatform) {
80
+ const replay = replayPlatform || os.platform();
81
+ const translations = [];
82
+ if (capturedPlatform === replay) {
83
+ return { environment: env, translations: [] };
84
+ }
85
+ const result = { ...env };
86
+ // Translate PATH separator
87
+ if (result.PATH) {
88
+ const fromSep = capturedPlatform === 'win32' ? ';' : ':';
89
+ const toSep = replay === 'win32' ? ';' : ':';
90
+ if (fromSep !== toSep) {
91
+ result.PATH = result.PATH.split(fromSep).join(toSep);
92
+ translations.push(`PATH separator: '${fromSep}' → '${toSep}'`);
93
+ }
94
+ }
95
+ // Map HOME ↔ USERPROFILE
96
+ if (capturedPlatform === 'win32' && replay !== 'win32') {
97
+ // Windows → Unix
98
+ if (result.USERPROFILE && !result.HOME) {
99
+ result.HOME = translatePathValue(result.USERPROFILE, capturedPlatform, replay);
100
+ translations.push('USERPROFILE → HOME');
101
+ }
102
+ if (result.USERNAME && !result.USER) {
103
+ result.USER = result.USERNAME;
104
+ translations.push('USERNAME → USER');
105
+ }
106
+ if (result.APPDATA && !result.XDG_CONFIG_HOME) {
107
+ result.XDG_CONFIG_HOME = translatePathValue(result.APPDATA, capturedPlatform, replay);
108
+ translations.push('APPDATA → XDG_CONFIG_HOME');
109
+ }
110
+ }
111
+ else if (capturedPlatform !== 'win32' && replay === 'win32') {
112
+ // Unix → Windows
113
+ if (result.HOME && !result.USERPROFILE) {
114
+ result.USERPROFILE = translatePathValue(result.HOME, capturedPlatform, replay);
115
+ translations.push('HOME → USERPROFILE');
116
+ }
117
+ if (result.USER && !result.USERNAME) {
118
+ result.USERNAME = result.USER;
119
+ translations.push('USER → USERNAME');
120
+ }
121
+ }
122
+ // Translate TMPDIR/TMP/TEMP
123
+ if (capturedPlatform !== 'win32' && replay === 'win32') {
124
+ if (result.TMPDIR && !result.TEMP) {
125
+ result.TEMP = os.tmpdir();
126
+ result.TMP = os.tmpdir();
127
+ translations.push('TMPDIR → TEMP/TMP (using local temp dir)');
128
+ }
129
+ }
130
+ else if (capturedPlatform === 'win32' && replay !== 'win32') {
131
+ if ((result.TEMP || result.TMP) && !result.TMPDIR) {
132
+ result.TMPDIR = os.tmpdir();
133
+ translations.push('TEMP/TMP → TMPDIR (using local temp dir)');
134
+ }
135
+ }
136
+ // Translate path values in all env vars
137
+ for (const key of Object.keys(result)) {
138
+ if (result[key] && looksLikePath(result[key], capturedPlatform)) {
139
+ const translated = translatePathValue(result[key], capturedPlatform, replay);
140
+ if (translated !== result[key]) {
141
+ result[key] = translated;
142
+ }
143
+ }
144
+ }
145
+ return { environment: result, translations };
146
+ }
147
+ // ── Command translation helpers ──
148
+ /** Common command aliases across platforms */
149
+ const COMMAND_MAP = {
150
+ // ── Scripting languages ──
151
+ 'python3': { win32: 'python' },
152
+ 'python': { linux: 'python3', darwin: 'python3' },
153
+ 'pip3': { win32: 'pip' },
154
+ 'pip': { linux: 'pip3', darwin: 'pip3' },
155
+ // ── Java/JVM ──
156
+ 'gradlew': { win32: 'gradlew.bat' },
157
+ 'gradlew.bat': { linux: './gradlew', darwin: './gradlew' },
158
+ './gradlew': { win32: 'gradlew.bat' },
159
+ 'mvnw': { win32: 'mvnw.cmd' },
160
+ 'mvnw.cmd': { linux: './mvnw', darwin: './mvnw' },
161
+ './mvnw': { win32: 'mvnw.cmd' },
162
+ // ── C/C++ build tools ──
163
+ 'make': { win32: 'mingw32-make' },
164
+ 'mingw32-make': { linux: 'make', darwin: 'make' },
165
+ 'cc': { win32: 'gcc' },
166
+ 'c++': { win32: 'g++' },
167
+ // ── .NET ──
168
+ 'dotnet': { win32: 'dotnet', linux: 'dotnet', darwin: 'dotnet' },
169
+ // ── Utilities ──
170
+ 'open': { win32: 'start', linux: 'xdg-open' },
171
+ 'xdg-open': { win32: 'start', darwin: 'open' },
172
+ 'start': { linux: 'xdg-open', darwin: 'open' },
173
+ 'cls': { linux: 'clear', darwin: 'clear' },
174
+ 'clear': { win32: 'cls' },
175
+ 'cat': { win32: 'type' },
176
+ 'ls': { win32: 'dir' },
177
+ 'rm': { win32: 'del' },
178
+ 'cp': { win32: 'copy' },
179
+ 'mv': { win32: 'move' },
180
+ 'which': { win32: 'where' },
181
+ 'where': { linux: 'which', darwin: 'which' },
182
+ // ── Shell ──
183
+ 'sh': { win32: 'bash' },
184
+ };
185
+ /** Binary extensions that cannot run cross-platform (reserved for future use) */
186
+ const _NATIVE_BINARY_EXTENSIONS = ['.exe', '.dll', '.so', '.dylib', '.elf', ''];
187
+ function translateExecutable(exe, from, to, translations, blockers) {
188
+ const baseName = path.basename(exe).replace(/\.exe$/i, '');
189
+ // Check for native binaries
190
+ const ext = path.extname(exe).toLowerCase();
191
+ if (from !== to) {
192
+ if (from === 'win32' && ext === '.exe' && to !== 'win32') {
193
+ blockers.push(`Cannot run Windows executable '${exe}' on ${platformName(to)}. Requires Windows or Wine.`);
194
+ }
195
+ if (from === 'linux' && !ext && to === 'win32') {
196
+ // Could be a Linux ELF binary — check if it's a known scripting command
197
+ if (!isScriptingCommand(baseName)) {
198
+ blockers.push(`Binary '${exe}' may be a Linux ELF executable. Cannot run on Windows without WSL.`);
199
+ }
200
+ }
201
+ }
202
+ // Try command map
203
+ const mapping = COMMAND_MAP[baseName];
204
+ if (mapping && mapping[to]) {
205
+ // Verify the target command exists
206
+ const exists = commandExists(mapping[to]);
207
+ if (exists) {
208
+ translations.push(`Command: ${baseName} → ${mapping[to]}`);
209
+ return mapping[to];
210
+ }
211
+ }
212
+ // python3 → python fallback on Windows
213
+ if (baseName === 'python3' && to === 'win32') {
214
+ if (commandExists('python')) {
215
+ translations.push('Command: python3 → python');
216
+ return 'python';
217
+ }
218
+ }
219
+ return exe;
220
+ }
221
+ function translateShellWrapper(command, from, to, translations) {
222
+ if (command.length < 2)
223
+ return command;
224
+ const exe = path.basename(command[0]).replace(/\.exe$/i, '');
225
+ // bash -c "..." → cmd /c "..." or powershell -c "..."
226
+ if ((exe === 'bash' || exe === 'sh') && command[1] === '-c' && to === 'win32') {
227
+ if (commandExists('bash')) {
228
+ // WSL/Git Bash available — keep as-is
229
+ return command;
230
+ }
231
+ translations.push(`Shell: ${exe} -c → powershell -Command`);
232
+ return ['powershell', '-NoProfile', '-Command', ...command.slice(2)];
233
+ }
234
+ // cmd /c "..." → bash -c "..." on Unix
235
+ if (exe === 'cmd' && (command[1] === '/c' || command[1] === '/C') && to !== 'win32') {
236
+ translations.push('Shell: cmd /c → bash -c');
237
+ return ['bash', '-c', ...command.slice(2)];
238
+ }
239
+ // powershell -Command "..." → bash -c "..." on Unix
240
+ if ((exe === 'powershell' || exe === 'pwsh') && to !== 'win32') {
241
+ const cmdIdx = command.findIndex(a => a === '-Command' || a === '-c');
242
+ if (cmdIdx >= 0) {
243
+ translations.push(`Shell: ${exe} → bash -c`);
244
+ return ['bash', '-c', ...command.slice(cmdIdx + 1)];
245
+ }
246
+ }
247
+ return command;
248
+ }
249
+ // ── Path translation ──
250
+ function translatePathArg(arg, from, to) {
251
+ if (!looksLikePath(arg, from))
252
+ return arg;
253
+ return translatePathValue(arg, from, to);
254
+ }
255
+ function translatePathValue(value, from, to) {
256
+ if (from === 'win32' && to !== 'win32') {
257
+ // Windows → Unix: C:\Users\foo → /home/foo (best effort)
258
+ let result = value.replace(/\\/g, '/');
259
+ // Strip drive letter
260
+ result = result.replace(/^[A-Za-z]:/, '');
261
+ // Map common Windows paths
262
+ result = result.replace(/^\/Users\//, '/home/');
263
+ return result;
264
+ }
265
+ if (from !== 'win32' && to === 'win32') {
266
+ // Unix → Windows: /home/foo/project → C:\Users\foo\project (best effort)
267
+ let result = value.replace(/\//g, '\\');
268
+ // Add drive letter if absolute
269
+ if (result.startsWith('\\')) {
270
+ result = 'C:' + result;
271
+ }
272
+ // Map common Unix paths
273
+ result = result.replace(/^C:\\home\\/, 'C:\\Users\\');
274
+ return result;
275
+ }
276
+ return value;
277
+ }
278
+ function looksLikePath(value, platform) {
279
+ if (platform === 'win32') {
280
+ return /^[A-Za-z]:[/\\]/.test(value) || value.includes('\\');
281
+ }
282
+ return value.startsWith('/') || value.startsWith('./') || value.startsWith('../');
283
+ }
284
+ // ── Utilities ──
285
+ function platformName(p) {
286
+ switch (p) {
287
+ case 'win32': return 'Windows';
288
+ case 'linux': return 'Linux';
289
+ case 'darwin': return 'macOS';
290
+ default: return p;
291
+ }
292
+ }
293
+ function isScriptingCommand(name) {
294
+ const crossPlatformCommands = [
295
+ // Scripting runtimes
296
+ 'node', 'python', 'python3', 'ruby', 'perl', 'php', 'deno', 'bun',
297
+ // JVM
298
+ 'java', 'javac', 'kotlin', 'kotlinc', 'scala', 'scalac',
299
+ // Compiled but cross-platform source
300
+ 'go', 'cargo', 'rustc', 'gcc', 'g++', 'clang', 'clang++', 'cc', 'c++',
301
+ // Build tools
302
+ 'make', 'cmake', 'ninja', 'meson', 'gradle', 'gradlew', 'mvn', 'mvnw', 'sbt', 'ant',
303
+ 'msbuild', 'dotnet', 'xcodebuild',
304
+ // Package managers
305
+ 'npm', 'npx', 'yarn', 'pnpm', 'pip', 'pip3', 'gem', 'bundle', 'composer',
306
+ 'apt', 'brew', 'choco', 'scoop', 'pacman',
307
+ // Version managers
308
+ 'nvm', 'pyenv', 'rbenv', 'rustup', 'sdkman',
309
+ // Test runners
310
+ 'jest', 'pytest', 'mocha', 'vitest', 'rspec', 'junit',
311
+ // Misc tools
312
+ 'git', 'curl', 'wget', 'tar', 'unzip', 'grep', 'find', 'sed', 'awk',
313
+ ];
314
+ return crossPlatformCommands.includes(name);
315
+ }
316
+ function commandExists(name) {
317
+ try {
318
+ const cmd = os.platform() === 'win32' ? 'where' : 'which';
319
+ const result = spawnSync(cmd, [name], {
320
+ encoding: 'utf-8',
321
+ timeout: 3000,
322
+ stdio: ['pipe', 'pipe', 'pipe'],
323
+ });
324
+ return result.status === 0;
325
+ }
326
+ catch {
327
+ return false;
328
+ }
329
+ }
330
+ //# sourceMappingURL=cross-platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-platform.js","sourceRoot":"","sources":["../../src/sandbox/cross-platform.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/sandbox/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,CAAC;AAE5E,8DAA8D;AAC9D,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,YAAY,EAAE,OAAO,CAAC;IACtB,qCAAqC;IACrC,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,eAAe,CAWjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EAAE,GAChB,sBAAsB,CA4CxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,IAAI,CAiBZ;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAiB/E"}
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/sandbox/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAGtD,yDAAyD;AACzD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,OAAO,GAAG,cAAc,GAAG,MAAM,CAAC;AAE5E,8DAA8D;AAC9D,MAAM,WAAW,sBAAsB;IACrC,qDAAqD;IACrD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kFAAkF;IAClF,YAAY,EAAE,OAAO,CAAC;IACtB,qCAAqC;IACrC,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,eAAe,CAWjF;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,MAAM,EAAE,GAChB,sBAAsB,CA4CxB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,eAAe,EACzB,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,IAAI,CAiBZ;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAuB/E"}
@@ -119,13 +119,18 @@ export function createNetworkCleanup(strategy, ruleName) {
119
119
  * @returns true if the rule was added, false on failure.
120
120
  */
121
121
  export function addFirewallBlockRule(ruleName, exePath) {
122
+ const safeRuleName = sanitizeFirewallRuleName(ruleName);
123
+ const safeExePath = sanitizeExecutablePath(exePath);
124
+ if (!safeRuleName || !safeExePath) {
125
+ return false;
126
+ }
122
127
  try {
123
128
  const result = spawnSync('netsh', [
124
129
  'advfirewall', 'firewall', 'add', 'rule',
125
- `name=${ruleName}`,
130
+ `name=${safeRuleName}`,
126
131
  'dir=out',
127
132
  'action=block',
128
- `program=${exePath}`,
133
+ `program=${safeExePath}`,
129
134
  ], { encoding: 'utf-8', timeout: 5000, stdio: 'pipe' });
130
135
  return result.status === 0;
131
136
  }
@@ -133,4 +138,28 @@ export function addFirewallBlockRule(ruleName, exePath) {
133
138
  return false;
134
139
  }
135
140
  }
141
+ function sanitizeFirewallRuleName(value) {
142
+ if (!value || value.length > 120) {
143
+ return null;
144
+ }
145
+ if (/[\r\n\t=]/.test(value)) {
146
+ return null;
147
+ }
148
+ if (!/^[A-Za-z0-9 _.-]+$/.test(value)) {
149
+ return null;
150
+ }
151
+ return value;
152
+ }
153
+ function sanitizeExecutablePath(value) {
154
+ if (!value || value.length > 260) {
155
+ return null;
156
+ }
157
+ if (/[\r\n\0]/.test(value)) {
158
+ return null;
159
+ }
160
+ if (/["<>|]/.test(value)) {
161
+ return null;
162
+ }
163
+ return value;
164
+ }
136
165
  //# sourceMappingURL=network.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/sandbox/network.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAe1C;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAA0B;IAC9D,QAAQ,IAAI,CAAC,QAAQ,EAAE,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9C,KAAK,OAAO;YACV,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1C,KAAK,QAAQ;YACX,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAAyB,EACzB,OAAiB;IAEjB,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,SAAS;YACZ,OAAO;gBACL,oEAAoE;gBACpE,mEAAmE;gBACnE,OAAO,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;gBAClE,YAAY,EAAE,KAAK;gBACnB,QAAQ;aACT,CAAC;QAEJ,KAAK,cAAc;YACjB,OAAO;gBACL,4CAA4C;gBAC5C,mEAAmE;gBACnE,gCAAgC;gBAChC,OAAO,EAAE;oBACP,cAAc;oBACd,IAAI;oBACJ,2CAA2C;oBAC3C,IAAI;oBACJ,GAAG,OAAO;iBACX;gBACD,YAAY,EAAE,KAAK;gBACnB,QAAQ;aACT,CAAC;QAEJ,KAAK,OAAO;YACV,sEAAsE;YACtE,0EAA0E;YAC1E,OAAO;gBACL,OAAO;gBACP,YAAY,EAAE,IAAI;gBAClB,QAAQ;aACT,CAAC;QAEJ,KAAK,MAAM,CAAC;QACZ;YACE,OAAO;gBACL,OAAO;gBACP,YAAY,EAAE,KAAK;gBACnB,QAAQ;aACT,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAyB,EACzB,QAAiB;IAEjB,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,EAAE,CAAC;QACrC,OAAO,GAAG,EAAE;YACV,IAAI,CAAC;gBACH,SAAS,CACP,OAAO,EACP,CAAC,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,QAAQ,EAAE,CAAC,EACjE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CACpD,CAAC;YACJ,CAAC;YAAC,MAAM,CAAC;gBACP,0DAA0D;YAC5D,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED,+EAA+E;IAC/E,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,OAAe;IACpE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CACtB,OAAO,EACP;YACE,aAAa,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM;YACxC,QAAQ,QAAQ,EAAE;YAClB,SAAS;YACT,cAAc;YACd,WAAW,OAAO,EAAE;SACrB,EACD,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CACpD,CAAC;QACF,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["../../src/sandbox/network.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Share Engine — push .bug artifacts to GitHub Gist
3
+ *
4
+ * Creates a secret gist with the artifact contents for easy sharing.
5
+ * Recipients can download and replay with: bugproof pull <gist-url>
6
+ */
7
+ export interface ShareResult {
8
+ url: string;
9
+ gistId: string;
10
+ rawUrl: string;
11
+ }
12
+ export declare function sanitizeShareError(input: string): string;
13
+ /**
14
+ * Uploads artifact contents to a GitHub Gist.
15
+ * Requires GITHUB_TOKEN or BUGPROOF_GITHUB_TOKEN env var.
16
+ */
17
+ export declare function shareToGist(artifactPath: string, options?: {
18
+ public?: boolean;
19
+ description?: string;
20
+ }): Promise<ShareResult>;
21
+ //# sourceMappingURL=gist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gist.d.ts","sourceRoot":"","sources":["../../src/share/gist.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAMD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACvD,OAAO,CAAC,WAAW,CAAC,CA4EtB"}
@@ -0,0 +1,158 @@
1
+ /**
2
+ * Share Engine — push .bug artifacts to GitHub Gist
3
+ *
4
+ * Creates a secret gist with the artifact contents for easy sharing.
5
+ * Recipients can download and replay with: bugproof pull <gist-url>
6
+ */
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import * as os from 'os';
10
+ import * as https from 'https';
11
+ import { extractZip } from '../utils/archive.js';
12
+ export function sanitizeShareError(input) {
13
+ return input
14
+ .replace(/Bearer\s+[A-Za-z0-9_\-.]+/gi, 'Bearer [REDACTED]')
15
+ .replace(/(gh[pousr]_[A-Za-z0-9_]+)/g, '[REDACTED_TOKEN]')
16
+ .replace(/("authorization"\s*:\s*")([^"]+)(")/gi, '$1[REDACTED]$3')
17
+ .replace(/(token\s*[=:]\s*)([^\s,]+)/gi, '$1[REDACTED]');
18
+ }
19
+ /**
20
+ * Uploads artifact contents to a GitHub Gist.
21
+ * Requires GITHUB_TOKEN or BUGPROOF_GITHUB_TOKEN env var.
22
+ */
23
+ export async function shareToGist(artifactPath, options = {}) {
24
+ const token = process.env.BUGPROOF_GITHUB_TOKEN || process.env.GITHUB_TOKEN;
25
+ if (!token) {
26
+ throw new Error('GitHub token required for sharing. Set GITHUB_TOKEN or BUGPROOF_GITHUB_TOKEN environment variable.\n' +
27
+ 'Create a token at: https://github.com/settings/tokens (needs "gist" scope)');
28
+ }
29
+ // Extract artifact if it's a zip
30
+ let extractDir;
31
+ let targetDir;
32
+ const stat = fs.statSync(artifactPath);
33
+ if (stat.isFile()) {
34
+ extractDir = fs.mkdtempSync(path.join(os.tmpdir(), 'bugproof-share-'));
35
+ await extractZip(artifactPath, extractDir);
36
+ targetDir = extractDir;
37
+ }
38
+ else {
39
+ targetDir = artifactPath;
40
+ }
41
+ try {
42
+ // Read key files from the artifact
43
+ const files = {};
44
+ const keyFiles = ['manifest.json', 'failure.json', 'run.json', 'env.schema.json'];
45
+ for (const filename of keyFiles) {
46
+ const filePath = path.join(targetDir, filename);
47
+ if (fs.existsSync(filePath)) {
48
+ files[filename] = { content: fs.readFileSync(filePath, 'utf-8') };
49
+ }
50
+ }
51
+ // Add a README for context
52
+ const manifest = JSON.parse(fs.readFileSync(path.join(targetDir, 'manifest.json'), 'utf-8'));
53
+ files['README.md'] = {
54
+ content: generateGistReadme(manifest),
55
+ };
56
+ // Add stderr/stdout logs if they exist
57
+ const stderrPath = path.join(targetDir, 'stderr.log');
58
+ const stdoutPath = path.join(targetDir, 'stdout.log');
59
+ if (fs.existsSync(stderrPath)) {
60
+ const content = fs.readFileSync(stderrPath, 'utf-8');
61
+ if (content.length <= 100000) { // Gist file size limit
62
+ files['stderr.log'] = { content };
63
+ }
64
+ }
65
+ if (fs.existsSync(stdoutPath)) {
66
+ const content = fs.readFileSync(stdoutPath, 'utf-8');
67
+ if (content.length <= 100000) {
68
+ files['stdout.log'] = { content };
69
+ }
70
+ }
71
+ // Create the gist
72
+ const gistData = JSON.stringify({
73
+ description: options.description || `BugProof: ${manifest.name} — ${manifest.description}`,
74
+ public: options.public || false,
75
+ files,
76
+ });
77
+ const result = await httpPost('https://api.github.com/gists', gistData, token);
78
+ const parsed = JSON.parse(result);
79
+ return {
80
+ url: parsed.html_url,
81
+ gistId: parsed.id,
82
+ rawUrl: parsed.html_url + '/raw',
83
+ };
84
+ }
85
+ finally {
86
+ if (extractDir) {
87
+ fs.rmSync(extractDir, { recursive: true, force: true });
88
+ }
89
+ }
90
+ }
91
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
+ function generateGistReadme(manifest) {
93
+ return `# BugProof Artifact: ${manifest.name}
94
+
95
+ > ${manifest.description}
96
+
97
+ ## Quick Replay
98
+
99
+ \`\`\`bash
100
+ # Download and replay this bug:
101
+ bugproof pull ${manifest.name}
102
+ \`\`\`
103
+
104
+ ## Details
105
+
106
+ | Field | Value |
107
+ |-------|-------|
108
+ | Command | \`${manifest.command.join(' ')}\` |
109
+ | Exit Code | ${manifest.exit_code} |
110
+ | Platform | ${manifest.captured_on.os}/${manifest.captured_on.arch} |
111
+ | Node | ${manifest.captured_on.node_version} |
112
+ | Captured | ${manifest.captured_at} |
113
+ | Git | ${manifest.captured_on.git_branch || 'n/a'} @ ${(manifest.captured_on.git_commit || 'n/a').slice(0, 8)} |
114
+
115
+ ## Files
116
+
117
+ ${manifest.files_count} files captured (${(manifest.files_size_bytes / 1024).toFixed(1)} KB)
118
+
119
+ ---
120
+ *Generated by [BugProof](https://github.com/sidinsearch/BugProof) v${manifest.bugproof_version}*
121
+ `;
122
+ }
123
+ function httpPost(url, data, token) {
124
+ return new Promise((resolve, reject) => {
125
+ const urlObj = new URL(url);
126
+ const options = {
127
+ hostname: urlObj.hostname,
128
+ port: 443,
129
+ path: urlObj.pathname,
130
+ method: 'POST',
131
+ headers: {
132
+ 'Content-Type': 'application/json',
133
+ 'Authorization': `Bearer ${token}`,
134
+ 'User-Agent': 'BugProof-CLI',
135
+ 'Accept': 'application/vnd.github+json',
136
+ 'Content-Length': Buffer.byteLength(data),
137
+ },
138
+ };
139
+ const req = https.request(options, (res) => {
140
+ let body = '';
141
+ res.on('data', (chunk) => { body += chunk; });
142
+ res.on('end', () => {
143
+ if (res.statusCode && res.statusCode >= 200 && res.statusCode < 300) {
144
+ resolve(body);
145
+ }
146
+ else {
147
+ reject(new Error(sanitizeShareError(`GitHub API error ${res.statusCode}: ${body}`)));
148
+ }
149
+ });
150
+ });
151
+ req.on('error', (err) => {
152
+ reject(new Error(sanitizeShareError(String(err))));
153
+ });
154
+ req.write(data);
155
+ req.end();
156
+ });
157
+ }
158
+ //# sourceMappingURL=gist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gist.js","sourceRoot":"","sources":["../../src/share/gist.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ export declare function validateArchiveEntryPath(entryName: string, destDir: string): void;
1
2
  /**
2
3
  * Compresses a directory into a ZIP archive.
3
4
  * @param sourceDir The directory to compress.
@@ -1 +1 @@
1
- {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/utils/archive.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBpF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhF"}
1
+ {"version":3,"file":"archive.d.ts","sourceRoot":"","sources":["../../src/utils/archive.ts"],"names":[],"mappings":"AAUA,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CASjF;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBpF;AAED;;;;GAIG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAqChF"}