BMAD-METHOD/tools/cli/lib
Adam Biggs 373c06b68f fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss
fs-extra routes all async operations through graceful-fs, whose EMFILE
retry queue causes non-deterministic file loss on macOS APFS during bulk
copy operations (~500+ files). Approximately 50% of install runs lose
26+ files from _bmad/.

Replace fs-extra entirely with a thin native wrapper (tools/cli/lib/fs.js)
that provides the same API surface backed by node:fs and node:fs/promises.
Copy and remove operations use synchronous native calls to eliminate the
race condition. Verified across 8+ consecutive runs with zero file loss.

- Add tools/cli/lib/fs.js native wrapper with full fs-extra API compat
- Update all 40 files to require the wrapper instead of fs-extra
- Remove fs-extra from package.json dependencies
- Add 37-test suite including 250-file bulk copy determinism test
2026-02-26 13:04:08 -08:00
..
agent feat: custom GitHub Copilot installer handler (#1606) 2026-02-09 13:41:11 -06:00
activation-builder.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
agent-analyzer.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
agent-party-generator.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
cli-utils.js refactor: Complete @clack/prompts Migration & Installer Output Consolidation (#1586) 2026-02-08 00:40:13 -06:00
config.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
file-ops.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
fs.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
platform-codes.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
project-root.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
prompts.js refactor: Complete @clack/prompts Migration & Installer Output Consolidation (#1586) 2026-02-08 00:40:13 -06:00
ui.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
xml-handler.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00
xml-to-markdown.js feat: v6.0.0-alpha.0 - the future is now 2025-09-28 23:17:07 -05:00
yaml-format.js we only need one yaml lib 2025-12-13 18:35:07 +08:00
yaml-xml-builder.js fix(installer): replace fs-extra with native fs to prevent non-deterministic file loss 2026-02-26 13:04:08 -08:00