bugproof 0.1.2 → 0.2.5

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 (78) hide show
  1. package/CHANGELOG.md +61 -5
  2. package/README.md +232 -8
  3. package/bin/bugproof.cmd +2 -0
  4. package/dist/capture/env-snapshot.d.ts +53 -0
  5. package/dist/capture/env-snapshot.d.ts.map +1 -0
  6. package/dist/capture/env-snapshot.js +122 -0
  7. package/dist/capture/env-snapshot.js.map +1 -0
  8. package/dist/capture/language-support.d.ts +55 -0
  9. package/dist/capture/language-support.d.ts.map +1 -0
  10. package/dist/capture/language-support.js +505 -0
  11. package/dist/capture/language-support.js.map +1 -0
  12. package/dist/capture/packager.d.ts +9 -0
  13. package/dist/capture/packager.d.ts.map +1 -1
  14. package/dist/capture/packager.js +23 -2
  15. package/dist/capture/packager.js.map +1 -1
  16. package/dist/capture/source-strategy.d.ts +52 -0
  17. package/dist/capture/source-strategy.d.ts.map +1 -0
  18. package/dist/capture/source-strategy.js +227 -0
  19. package/dist/capture/source-strategy.js.map +1 -0
  20. package/dist/cli.js +373 -12
  21. package/dist/cli.js.map +1 -1
  22. package/dist/config/loader.d.ts +44 -0
  23. package/dist/config/loader.d.ts.map +1 -0
  24. package/dist/config/loader.js +87 -0
  25. package/dist/config/loader.js.map +1 -0
  26. package/dist/replay/engine.d.ts +9 -0
  27. package/dist/replay/engine.d.ts.map +1 -1
  28. package/dist/replay/engine.js +29 -3
  29. package/dist/replay/engine.js.map +1 -1
  30. package/dist/replay/hints.d.ts +18 -0
  31. package/dist/replay/hints.d.ts.map +1 -0
  32. package/dist/replay/hints.js +138 -0
  33. package/dist/replay/hints.js.map +1 -0
  34. package/dist/replay/sandbox.js +41 -14
  35. package/dist/replay/sandbox.js.map +1 -1
  36. package/dist/replay/verdict.d.ts.map +1 -1
  37. package/dist/replay/verdict.js +41 -5
  38. package/dist/replay/verdict.js.map +1 -1
  39. package/dist/sandbox/bugbox.d.ts.map +1 -1
  40. package/dist/sandbox/bugbox.js +40 -6
  41. package/dist/sandbox/bugbox.js.map +1 -1
  42. package/dist/sandbox/container.d.ts +81 -0
  43. package/dist/sandbox/container.d.ts.map +1 -0
  44. package/dist/sandbox/container.js +343 -0
  45. package/dist/sandbox/container.js.map +1 -0
  46. package/dist/sandbox/cross-platform.d.ts +59 -0
  47. package/dist/sandbox/cross-platform.d.ts.map +1 -0
  48. package/dist/sandbox/cross-platform.js +330 -0
  49. package/dist/sandbox/cross-platform.js.map +1 -0
  50. package/dist/sandbox/filesystem.d.ts +2 -2
  51. package/dist/sandbox/filesystem.d.ts.map +1 -1
  52. package/dist/sandbox/filesystem.js +46 -19
  53. package/dist/sandbox/filesystem.js.map +1 -1
  54. package/dist/sandbox/network.d.ts.map +1 -1
  55. package/dist/sandbox/network.js +31 -2
  56. package/dist/sandbox/network.js.map +1 -1
  57. package/dist/share/gist.d.ts +21 -0
  58. package/dist/share/gist.d.ts.map +1 -0
  59. package/dist/share/gist.js +158 -0
  60. package/dist/share/gist.js.map +1 -0
  61. package/dist/utils/archive.d.ts +1 -0
  62. package/dist/utils/archive.d.ts.map +1 -1
  63. package/dist/utils/archive.js +42 -1
  64. package/dist/utils/archive.js.map +1 -1
  65. package/dist/utils/artifact-validation.d.ts +7 -0
  66. package/dist/utils/artifact-validation.d.ts.map +1 -0
  67. package/dist/utils/artifact-validation.js +212 -0
  68. package/dist/utils/artifact-validation.js.map +1 -0
  69. package/dist/utils/dependencies.d.ts +18 -0
  70. package/dist/utils/dependencies.d.ts.map +1 -0
  71. package/dist/utils/dependencies.js +218 -0
  72. package/dist/utils/dependencies.js.map +1 -0
  73. package/dist/utils/ui.d.ts +1 -0
  74. package/dist/utils/ui.d.ts.map +1 -1
  75. package/dist/utils/ui.js +1 -0
  76. package/dist/utils/ui.js.map +1 -1
  77. package/package.json +5 -2
  78. package/scripts/postinstall.cjs +38 -5
@@ -0,0 +1,505 @@
1
+ /**
2
+ * Language Support Module
3
+ *
4
+ * Detects the project's programming language(s) and captures language-specific
5
+ * context needed for cross-platform bug reproduction:
6
+ *
7
+ * - Node.js/TypeScript: package.json, node_modules state, npm/yarn/pnpm lockfiles
8
+ * - Python: requirements.txt, pyproject.toml, virtual env detection
9
+ * - Java/Kotlin: pom.xml, build.gradle, JDK version, classpath
10
+ * - C/C++: Makefile, CMakeLists.txt, compiler version (gcc/clang/msvc)
11
+ * - Go: go.mod, go.sum
12
+ * - Rust: Cargo.toml, Cargo.lock, rustc version
13
+ * - Ruby: Gemfile, Gemfile.lock
14
+ * - .NET/C#: *.csproj, *.sln, dotnet version
15
+ *
16
+ * This information is stored in the artifact so replay can:
17
+ * 1. Warn about missing build tools
18
+ * 2. Suggest dependency installation commands
19
+ * 3. Detect build system differences across platforms
20
+ */
21
+ import * as fs from 'fs';
22
+ import * as path from 'path';
23
+ import { spawnSync } from 'child_process';
24
+ import * as os from 'os';
25
+ /** Detect project languages and capture context */
26
+ export function detectProjectLanguages(workingDir) {
27
+ const languages = [];
28
+ const buildCommands = [];
29
+ const criticalFiles = [];
30
+ const warnings = [];
31
+ // Detect each language
32
+ const detectors = [
33
+ detectNodeJS,
34
+ detectPython,
35
+ detectJava,
36
+ detectCpp,
37
+ detectGo,
38
+ detectRust,
39
+ detectRuby,
40
+ detectDotnet,
41
+ ];
42
+ for (const detect of detectors) {
43
+ const result = detect(workingDir);
44
+ if (result) {
45
+ languages.push(result.language);
46
+ buildCommands.push(...result.buildCommands);
47
+ criticalFiles.push(...result.criticalFiles);
48
+ warnings.push(...result.warnings);
49
+ }
50
+ }
51
+ return {
52
+ languages,
53
+ primary: languages[0] || null,
54
+ buildCommands,
55
+ criticalFiles,
56
+ warnings,
57
+ };
58
+ }
59
+ // ── Node.js / TypeScript ──
60
+ function detectNodeJS(workingDir) {
61
+ const pkgPath = path.join(workingDir, 'package.json');
62
+ if (!fs.existsSync(pkgPath))
63
+ return null;
64
+ const warnings = [];
65
+ const criticalFiles = ['package.json'];
66
+ const buildCommands = [];
67
+ // Detect package manager
68
+ let packageManager = 'npm';
69
+ let lockfile = null;
70
+ if (fs.existsSync(path.join(workingDir, 'pnpm-lock.yaml'))) {
71
+ packageManager = 'pnpm';
72
+ lockfile = 'pnpm-lock.yaml';
73
+ }
74
+ else if (fs.existsSync(path.join(workingDir, 'yarn.lock'))) {
75
+ packageManager = 'yarn';
76
+ lockfile = 'yarn.lock';
77
+ }
78
+ else if (fs.existsSync(path.join(workingDir, 'package-lock.json'))) {
79
+ packageManager = 'npm';
80
+ lockfile = 'package-lock.json';
81
+ }
82
+ else if (fs.existsSync(path.join(workingDir, 'bun.lockb'))) {
83
+ packageManager = 'bun';
84
+ lockfile = 'bun.lockb';
85
+ }
86
+ if (lockfile)
87
+ criticalFiles.push(lockfile);
88
+ // Detect TypeScript
89
+ const isTS = fs.existsSync(path.join(workingDir, 'tsconfig.json'));
90
+ if (isTS) {
91
+ criticalFiles.push('tsconfig.json');
92
+ buildCommands.push(`${packageManager} run build`);
93
+ }
94
+ // Check if node_modules exists
95
+ if (!fs.existsSync(path.join(workingDir, 'node_modules'))) {
96
+ buildCommands.unshift(`${packageManager} install`);
97
+ }
98
+ // Probe node version
99
+ const nodeVersion = probeVersion('node', ['--version'], /v?([\d.]+)/);
100
+ return {
101
+ language: {
102
+ id: isTS ? 'typescript' : 'javascript',
103
+ name: isTS ? 'TypeScript (Node.js)' : 'JavaScript (Node.js)',
104
+ version: nodeVersion,
105
+ buildSystem: isTS ? 'tsc' : null,
106
+ packageManager,
107
+ lockfile,
108
+ needsBuild: isTS,
109
+ crossPlatform: 'high',
110
+ notes: ['Node.js is cross-platform. Same code runs on Windows/Linux/macOS.'],
111
+ },
112
+ buildCommands,
113
+ criticalFiles,
114
+ warnings,
115
+ };
116
+ }
117
+ // ── Python ──
118
+ function detectPython(workingDir) {
119
+ const indicators = [
120
+ 'requirements.txt', 'pyproject.toml', 'setup.py', 'setup.cfg',
121
+ 'Pipfile', 'poetry.lock', 'conda.yaml',
122
+ ];
123
+ const found = indicators.find(f => fs.existsSync(path.join(workingDir, f)));
124
+ if (!found && !hasPythonFiles(workingDir))
125
+ return null;
126
+ const warnings = [];
127
+ const criticalFiles = [];
128
+ const buildCommands = [];
129
+ let packageManager = 'pip';
130
+ let lockfile = null;
131
+ if (fs.existsSync(path.join(workingDir, 'Pipfile.lock'))) {
132
+ packageManager = 'pipenv';
133
+ lockfile = 'Pipfile.lock';
134
+ criticalFiles.push('Pipfile', 'Pipfile.lock');
135
+ buildCommands.push('pipenv install');
136
+ }
137
+ else if (fs.existsSync(path.join(workingDir, 'poetry.lock'))) {
138
+ packageManager = 'poetry';
139
+ lockfile = 'poetry.lock';
140
+ criticalFiles.push('pyproject.toml', 'poetry.lock');
141
+ buildCommands.push('poetry install');
142
+ }
143
+ else if (fs.existsSync(path.join(workingDir, 'requirements.txt'))) {
144
+ criticalFiles.push('requirements.txt');
145
+ buildCommands.push('pip install -r requirements.txt');
146
+ }
147
+ else if (fs.existsSync(path.join(workingDir, 'pyproject.toml'))) {
148
+ criticalFiles.push('pyproject.toml');
149
+ buildCommands.push('pip install -e .');
150
+ }
151
+ // Virtual env detection
152
+ const venvDirs = ['.venv', 'venv', 'env', '.env'];
153
+ const hasVenv = venvDirs.some(d => fs.existsSync(path.join(workingDir, d)));
154
+ if (!hasVenv) {
155
+ warnings.push('No virtual environment detected. Replay may use system Python.');
156
+ }
157
+ // python vs python3 cross-platform
158
+ warnings.push('Python command differs across platforms: python3 (Linux/macOS) vs python (Windows).');
159
+ const pythonVersion = probeVersion('python', ['--version'], /Python\s+([\d.]+)/)
160
+ ?? probeVersion('python3', ['--version'], /Python\s+([\d.]+)/);
161
+ return {
162
+ language: {
163
+ id: 'python',
164
+ name: 'Python',
165
+ version: pythonVersion,
166
+ buildSystem: null,
167
+ packageManager,
168
+ lockfile,
169
+ needsBuild: false,
170
+ crossPlatform: 'high',
171
+ notes: [
172
+ 'Python is cross-platform. python3 ↔ python translation handled automatically.',
173
+ 'C extensions (e.g., numpy) may need platform-specific wheels.',
174
+ ],
175
+ },
176
+ buildCommands,
177
+ criticalFiles,
178
+ warnings,
179
+ };
180
+ }
181
+ // ── Java / Kotlin ──
182
+ function detectJava(workingDir) {
183
+ const hasMaven = fs.existsSync(path.join(workingDir, 'pom.xml'));
184
+ const hasGradle = fs.existsSync(path.join(workingDir, 'build.gradle'))
185
+ || fs.existsSync(path.join(workingDir, 'build.gradle.kts'));
186
+ const hasSbt = fs.existsSync(path.join(workingDir, 'build.sbt'));
187
+ if (!hasMaven && !hasGradle && !hasSbt)
188
+ return null;
189
+ const warnings = [];
190
+ const criticalFiles = [];
191
+ const buildCommands = [];
192
+ let buildSystem = 'unknown';
193
+ if (hasMaven) {
194
+ buildSystem = 'maven';
195
+ criticalFiles.push('pom.xml');
196
+ const mvnCmd = os.platform() === 'win32' ? 'mvnw.cmd' : './mvnw';
197
+ const hasMvnWrapper = fs.existsSync(path.join(workingDir, 'mvnw'));
198
+ buildCommands.push(hasMvnWrapper ? `${mvnCmd} compile` : 'mvn compile');
199
+ }
200
+ else if (hasGradle) {
201
+ buildSystem = 'gradle';
202
+ criticalFiles.push(fs.existsSync(path.join(workingDir, 'build.gradle.kts'))
203
+ ? 'build.gradle.kts' : 'build.gradle');
204
+ const gradleCmd = os.platform() === 'win32' ? 'gradlew.bat' : './gradlew';
205
+ const hasGradleWrapper = fs.existsSync(path.join(workingDir, 'gradlew'));
206
+ buildCommands.push(hasGradleWrapper ? `${gradleCmd} build` : 'gradle build');
207
+ if (hasGradleWrapper) {
208
+ criticalFiles.push('gradlew', 'gradlew.bat', 'gradle/wrapper/gradle-wrapper.properties');
209
+ }
210
+ }
211
+ else if (hasSbt) {
212
+ buildSystem = 'sbt';
213
+ criticalFiles.push('build.sbt');
214
+ buildCommands.push('sbt compile');
215
+ }
216
+ // Java version matters a lot
217
+ const javaVersion = probeVersion('java', ['-version'], /version\s+"?([\d.]+)/);
218
+ if (javaVersion) {
219
+ const major = parseInt(javaVersion.split('.')[0], 10);
220
+ if (major >= 9) {
221
+ warnings.push(`Java ${major} detected. Ensure replay system has JDK ${major}+.`);
222
+ }
223
+ }
224
+ warnings.push('Java is cross-platform (JVM), but build tool wrappers (gradlew/mvnw) differ per OS.');
225
+ warnings.push('Ensure JAVA_HOME is set correctly on the replay system.');
226
+ return {
227
+ language: {
228
+ id: 'java',
229
+ name: 'Java',
230
+ version: javaVersion,
231
+ buildSystem,
232
+ packageManager: buildSystem,
233
+ lockfile: null,
234
+ needsBuild: true,
235
+ crossPlatform: 'high',
236
+ notes: [
237
+ 'JVM bytecode is cross-platform. Build wrappers handle OS differences.',
238
+ 'JDK version must match (major version). gradlew/mvnw handle build tool versioning.',
239
+ ],
240
+ },
241
+ buildCommands,
242
+ criticalFiles,
243
+ warnings,
244
+ };
245
+ }
246
+ // ── C / C++ ──
247
+ function detectCpp(workingDir) {
248
+ const hasCMake = fs.existsSync(path.join(workingDir, 'CMakeLists.txt'));
249
+ const hasMakefile = fs.existsSync(path.join(workingDir, 'Makefile'))
250
+ || fs.existsSync(path.join(workingDir, 'makefile'));
251
+ const hasMeson = fs.existsSync(path.join(workingDir, 'meson.build'));
252
+ const hasVcxproj = findFile(workingDir, '*.vcxproj');
253
+ if (!hasCMake && !hasMakefile && !hasMeson && !hasVcxproj && !hasCFiles(workingDir))
254
+ return null;
255
+ const warnings = [];
256
+ const criticalFiles = [];
257
+ const buildCommands = [];
258
+ let buildSystem = 'unknown';
259
+ if (hasCMake) {
260
+ buildSystem = 'cmake';
261
+ criticalFiles.push('CMakeLists.txt');
262
+ buildCommands.push('cmake -B build', 'cmake --build build');
263
+ }
264
+ else if (hasMeson) {
265
+ buildSystem = 'meson';
266
+ criticalFiles.push('meson.build');
267
+ buildCommands.push('meson setup build', 'ninja -C build');
268
+ }
269
+ else if (hasMakefile) {
270
+ buildSystem = 'make';
271
+ criticalFiles.push('Makefile');
272
+ buildCommands.push('make');
273
+ }
274
+ else if (hasVcxproj) {
275
+ buildSystem = 'msbuild';
276
+ buildCommands.push('msbuild /p:Configuration=Release');
277
+ }
278
+ // Detect compiler
279
+ let compilerVersion = null;
280
+ if (os.platform() === 'win32') {
281
+ compilerVersion = probeVersion('cl', [], /Version\s+([\d.]+)/);
282
+ if (!compilerVersion) {
283
+ compilerVersion = probeVersion('gcc', ['--version'], /gcc.*?([\d.]+)/);
284
+ }
285
+ }
286
+ else {
287
+ compilerVersion = probeVersion('gcc', ['--version'], /gcc.*?([\d.]+)/)
288
+ ?? probeVersion('clang', ['--version'], /clang.*?([\d.]+)/);
289
+ }
290
+ // C/C++ is NOT cross-platform for binaries
291
+ warnings.push('C/C++ produces platform-specific binaries. Source must be recompiled on the target OS.');
292
+ warnings.push('Compiler (gcc/clang/MSVC) and version must be compatible.');
293
+ if (buildSystem === 'make') {
294
+ warnings.push('Makefile may contain platform-specific commands. CMake recommended for cross-platform.');
295
+ }
296
+ if (os.platform() === 'win32' && buildSystem !== 'cmake' && buildSystem !== 'meson') {
297
+ warnings.push('Windows: ensure Visual Studio Build Tools or MinGW/MSYS2 is installed.');
298
+ }
299
+ return {
300
+ language: {
301
+ id: 'cpp',
302
+ name: 'C/C++',
303
+ version: compilerVersion,
304
+ buildSystem,
305
+ packageManager: null,
306
+ lockfile: null,
307
+ needsBuild: true,
308
+ crossPlatform: 'low',
309
+ notes: [
310
+ 'C/C++ source is portable, but binaries are platform-specific.',
311
+ 'Must recompile on target OS. Compiler flags may differ.',
312
+ 'CMake provides the best cross-platform build experience.',
313
+ ],
314
+ },
315
+ buildCommands,
316
+ criticalFiles,
317
+ warnings,
318
+ };
319
+ }
320
+ // ── Go ──
321
+ function detectGo(workingDir) {
322
+ if (!fs.existsSync(path.join(workingDir, 'go.mod')))
323
+ return null;
324
+ const criticalFiles = ['go.mod'];
325
+ const buildCommands = [];
326
+ const warnings = [];
327
+ if (fs.existsSync(path.join(workingDir, 'go.sum'))) {
328
+ criticalFiles.push('go.sum');
329
+ }
330
+ buildCommands.push('go build ./...');
331
+ const goVersion = probeVersion('go', ['version'], /go([\d.]+)/);
332
+ warnings.push('Go produces platform-specific binaries. Rebuild on target OS with `go build`.');
333
+ warnings.push('Go source is cross-platform. Cross-compilation: GOOS=linux go build');
334
+ return {
335
+ language: {
336
+ id: 'go',
337
+ name: 'Go',
338
+ version: goVersion,
339
+ buildSystem: 'go',
340
+ packageManager: 'go modules',
341
+ lockfile: 'go.sum',
342
+ needsBuild: true,
343
+ crossPlatform: 'medium',
344
+ notes: [
345
+ 'Go source compiles anywhere Go is installed.',
346
+ 'Built-in cross-compilation support (GOOS/GOARCH).',
347
+ 'CGo dependencies may not be portable.',
348
+ ],
349
+ },
350
+ buildCommands,
351
+ criticalFiles,
352
+ warnings,
353
+ };
354
+ }
355
+ // ── Rust ──
356
+ function detectRust(workingDir) {
357
+ if (!fs.existsSync(path.join(workingDir, 'Cargo.toml')))
358
+ return null;
359
+ const criticalFiles = ['Cargo.toml'];
360
+ const buildCommands = [];
361
+ const warnings = [];
362
+ if (fs.existsSync(path.join(workingDir, 'Cargo.lock'))) {
363
+ criticalFiles.push('Cargo.lock');
364
+ }
365
+ buildCommands.push('cargo build');
366
+ const rustVersion = probeVersion('rustc', ['--version'], /rustc\s+([\d.]+)/);
367
+ warnings.push('Rust produces platform-specific binaries. Rebuild on target OS with `cargo build`.');
368
+ return {
369
+ language: {
370
+ id: 'rust',
371
+ name: 'Rust',
372
+ version: rustVersion,
373
+ buildSystem: 'cargo',
374
+ packageManager: 'cargo',
375
+ lockfile: 'Cargo.lock',
376
+ needsBuild: true,
377
+ crossPlatform: 'medium',
378
+ notes: [
379
+ 'Rust source is cross-platform. Cross-compilation via `--target`.',
380
+ 'Binaries are platform-specific. Must rebuild on target.',
381
+ 'Ensure same Rust toolchain version for reproducibility.',
382
+ ],
383
+ },
384
+ buildCommands,
385
+ criticalFiles,
386
+ warnings,
387
+ };
388
+ }
389
+ // ── Ruby ──
390
+ function detectRuby(workingDir) {
391
+ if (!fs.existsSync(path.join(workingDir, 'Gemfile')))
392
+ return null;
393
+ const criticalFiles = ['Gemfile'];
394
+ const buildCommands = ['bundle install'];
395
+ const warnings = [];
396
+ if (fs.existsSync(path.join(workingDir, 'Gemfile.lock'))) {
397
+ criticalFiles.push('Gemfile.lock');
398
+ }
399
+ const rubyVersion = probeVersion('ruby', ['--version'], /ruby\s+([\d.]+)/);
400
+ warnings.push('Ruby gems with native extensions may fail on different OS.');
401
+ return {
402
+ language: {
403
+ id: 'ruby',
404
+ name: 'Ruby',
405
+ version: rubyVersion,
406
+ buildSystem: null,
407
+ packageManager: 'bundler',
408
+ lockfile: 'Gemfile.lock',
409
+ needsBuild: false,
410
+ crossPlatform: 'high',
411
+ notes: [
412
+ 'Ruby is cross-platform. Same code runs everywhere Ruby is installed.',
413
+ 'Native extensions (e.g., nokogiri) require platform-specific compilation.',
414
+ ],
415
+ },
416
+ buildCommands,
417
+ criticalFiles,
418
+ warnings,
419
+ };
420
+ }
421
+ // ── .NET / C# ──
422
+ function detectDotnet(workingDir) {
423
+ const hasCsproj = findFile(workingDir, '*.csproj');
424
+ const hasSln = findFile(workingDir, '*.sln');
425
+ if (!hasCsproj && !hasSln)
426
+ return null;
427
+ const criticalFiles = [];
428
+ const buildCommands = ['dotnet restore', 'dotnet build'];
429
+ const warnings = [];
430
+ if (hasCsproj)
431
+ criticalFiles.push(hasCsproj);
432
+ if (hasSln)
433
+ criticalFiles.push(hasSln);
434
+ const dotnetVersion = probeVersion('dotnet', ['--version'], /([\d.]+)/);
435
+ warnings.push('.NET is cross-platform (Core/.NET 5+). Ensure same SDK version.');
436
+ if (!dotnetVersion) {
437
+ warnings.push('.NET SDK not found. Install from https://dot.net');
438
+ }
439
+ return {
440
+ language: {
441
+ id: 'dotnet',
442
+ name: 'C# (.NET)',
443
+ version: dotnetVersion,
444
+ buildSystem: 'dotnet',
445
+ packageManager: 'nuget',
446
+ lockfile: null,
447
+ needsBuild: true,
448
+ crossPlatform: 'high',
449
+ notes: [
450
+ '.NET 5+ is fully cross-platform.',
451
+ '.NET Framework (4.x) is Windows-only — check target framework.',
452
+ 'NuGet packages restore automatically via `dotnet restore`.',
453
+ ],
454
+ },
455
+ buildCommands,
456
+ criticalFiles,
457
+ warnings,
458
+ };
459
+ }
460
+ // ── Utility helpers ──
461
+ function probeVersion(command, args, pattern) {
462
+ try {
463
+ const result = spawnSync(command, args, {
464
+ encoding: 'utf-8',
465
+ timeout: 3000,
466
+ stdio: ['pipe', 'pipe', 'pipe'],
467
+ });
468
+ const output = (result.stdout || '') + (result.stderr || '');
469
+ const match = output.match(pattern);
470
+ return match ? match[1] : null;
471
+ }
472
+ catch {
473
+ return null;
474
+ }
475
+ }
476
+ function hasPythonFiles(dir) {
477
+ try {
478
+ const entries = fs.readdirSync(dir);
479
+ return entries.some(e => e.endsWith('.py'));
480
+ }
481
+ catch {
482
+ return false;
483
+ }
484
+ }
485
+ function hasCFiles(dir) {
486
+ try {
487
+ const entries = fs.readdirSync(dir);
488
+ return entries.some(e => e.endsWith('.c') || e.endsWith('.cpp') || e.endsWith('.h') || e.endsWith('.cc'));
489
+ }
490
+ catch {
491
+ return false;
492
+ }
493
+ }
494
+ function findFile(dir, globPattern) {
495
+ const ext = globPattern.replace('*', '');
496
+ try {
497
+ const entries = fs.readdirSync(dir);
498
+ const match = entries.find(e => e.endsWith(ext));
499
+ return match || null;
500
+ }
501
+ catch {
502
+ return null;
503
+ }
504
+ }
505
+ //# sourceMappingURL=language-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-support.js","sourceRoot":"","sources":["../../src/capture/language-support.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,8 @@
1
1
  import { ArtifactManifest, EnvSchema, RunConfig, ArtifactMetadata } from '../types/artifact.js';
2
2
  import { FailureRecord } from '../types/failure.js';
3
+ import { SourceStrategyResult } from './source-strategy.js';
4
+ import { EnvSnapshot } from './env-snapshot.js';
5
+ import { ProjectLanguageContext } from './language-support.js';
3
6
  export interface PackageOptions {
4
7
  manifest: ArtifactManifest;
5
8
  envSchema: EnvSchema;
@@ -11,6 +14,12 @@ export interface PackageOptions {
11
14
  secretKeys: string[];
12
15
  includeUntracked?: boolean;
13
16
  excludePatterns?: string[];
17
+ /** Smart source strategy result (if available) */
18
+ sourceStrategy?: SourceStrategyResult;
19
+ /** Environment snapshot (runtime versions) */
20
+ envSnapshot?: EnvSnapshot;
21
+ /** Detected project languages and build context */
22
+ languageContext?: ProjectLanguageContext;
14
23
  }
15
24
  export interface FileEntry {
16
25
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"packager.d.ts","sourceRoot":"","sources":["../../src/capture/packager.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,CA6E9E"}
1
+ {"version":3,"file":"packager.d.ts","sourceRoot":"","sources":["../../src/capture/packager.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kDAAkD;IAClD,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,8CAA8C;IAC9C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,mDAAmD;IACnD,eAAe,CAAC,EAAE,sBAAsB,CAAC;CAC1C;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,SAAS,EAAE,CAAA;CAAE,CAAC,CA8G9E"}
@@ -56,7 +56,27 @@ export async function packageArtifact(artifactPath, options) {
56
56
  fs.writeFileSync(path.join(tempDir, 'failure.json'), JSON.stringify(options.failure, null, 2));
57
57
  // 6. Write file manifest with checksums
58
58
  fs.writeFileSync(path.join(tempDir, 'files.json'), JSON.stringify(fileEntries, null, 2));
59
- // 7. Write logs
59
+ // 7. Write source strategy metadata
60
+ if (options.sourceStrategy) {
61
+ fs.writeFileSync(path.join(tempDir, 'source-strategy.json'), JSON.stringify({
62
+ strategy: options.sourceStrategy.strategy,
63
+ commit: options.sourceStrategy.commit,
64
+ reason: options.sourceStrategy.reason,
65
+ }, null, 2));
66
+ // Write git patch if available
67
+ if (options.sourceStrategy.patch) {
68
+ fs.writeFileSync(path.join(tempDir, 'changes.patch'), options.sourceStrategy.patch);
69
+ }
70
+ }
71
+ // 8. Write environment snapshot
72
+ if (options.envSnapshot) {
73
+ fs.writeFileSync(path.join(tempDir, 'env-snapshot.json'), JSON.stringify(options.envSnapshot, null, 2));
74
+ }
75
+ // 8b. Write language context
76
+ if (options.languageContext) {
77
+ fs.writeFileSync(path.join(tempDir, 'language-context.json'), JSON.stringify(options.languageContext, null, 2));
78
+ }
79
+ // 9. Write logs
60
80
  const logsDir = path.join(tempDir, 'logs');
61
81
  fs.mkdirSync(logsDir, { recursive: true });
62
82
  fs.writeFileSync(path.join(logsDir, 'stdout.txt'), options.stdout);
@@ -91,7 +111,8 @@ function copySourceFiles(filesDir, workingDir, includeUntracked, excludePatterns
91
111
  }
92
112
  const result = spawnSync('git', gitArgs, { cwd: workingDir, encoding: 'utf-8' });
93
113
  if (result.status !== 0) {
94
- throw new Error(`git ls-files failed: ${result.stderr}`);
114
+ // Not a git repo or git not available — return empty file list
115
+ return [];
95
116
  }
96
117
  let relativePaths = result.stdout
97
118
  .split('\n')
@@ -1 +1 @@
1
- {"version":3,"file":"packager.js","sourceRoot":"","sources":["../../src/capture/packager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"packager.js","sourceRoot":"","sources":["../../src/capture/packager.ts"],"names":[],"mappings":"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"}