Add Rust-backed provider with XFS-safe durability via IPC bridge, TypeScript provider, tests and docs
- Add Rust workspace and crates (smartfs-protocol, smartfs-core, smartfs-bin) with Cargo.toml and Cargo.lock
- Implement filesystem operations in Rust with XFS-safe parent fsyncs, streaming, watch support and IPC protocol types (smartfs-protocol)
- Add Rust binary (smartfs-bin) implementing management/IPC mode and core ops, plus watch manager and write-stream handling
- Add TypeScript bridge/provider (ts/providers/smartfs.provider.rust.ts), export provider from ts/index.ts, and include @push.rocks/smartrust in plugins
- Add integration tests for the Rust provider (test/test.rust.provider.node+bun.ts)
- Update packaging and tooling: package.json scripts and devDependencies (tsrust added/updated), npmextra.json target entry, .gitignore rust/target, and README updates
use synchronous readdir to avoid partial results on some filesystems (e.g., XFS) when the process receives signals
- Replaced async fs.readdir with fsSync.readdirSync in ts/providers/smartfs.provider.node.ts
- Added comments explaining that async readdir can return partial results on XFS/mounted filesystems when the process receives signals; synchronous readdirSync completes the getdents64 syscall without event-loop interruption
Add directory treeHash: deterministic content-based hashing of directory trees with streaming and algorithm option
- Implement treeHash(options?) on SmartFsDirectory which computes a deterministic hash of a directory tree by hashing relative file paths and streaming file contents (default algorithm: 'sha256').
- Introduce ITreeHashOptions type (algorithm?: string) to allow selecting the hash algorithm (e.g. 'sha256', 'sha512').
- Use Node.js crypto to update the hash incrementally while streaming file data to keep memory usage low.
- Add tests in test/test.node.provider.ts covering treeHash behavior, determinism, algorithm selection, and empty-directory hashing.
- Update README with documentation, examples and explanation of treeHash use cases and behavior.
Fix Node provider watch path handling and remove main test entry
- Node provider: detect at start whether the watched path is a file or directory (fs.stat) and build fullPath accordingly so watching a single file does not incorrectly join the filename onto the file path.
- Watch callback: ensure events are evaluated against the configured filter using the correct full path.
- Tests: removed test/test.ts (main test entry that previously imported provider test files).
Add SmartFS core library with providers, builders, interfaces, docs, tests and CI
- Add core TypeScript sources and public exports: SmartFs, SmartFsFile, SmartFsDirectory, SmartFsTransaction, SmartFsWatcher and ts/index.ts
- Add two providers: SmartFsProviderNode (Node.js fs/promises + fs.watch) and SmartFsProviderMemory (in-memory implementation used for testing)
- Add provider and type contracts: ISmartFsProvider, IProviderCapabilities and comprehensive mod.types definitions
- Implement transactions with prepare/execute/rollback, atomic writes, Web Streams-based read/write streams, and file watching with debouncing and filters
- Add tests entry (test/test.ts) and test scaffolding for memory and node providers