feat(filesystem): add AppFileSystem service, migrate Snapshot#18138
Merged
kitlangton merged 5 commits intodevfrom Mar 18, 2026
Merged
feat(filesystem): add AppFileSystem service, migrate Snapshot#18138kitlangton merged 5 commits intodevfrom
kitlangton merged 5 commits intodevfrom
Conversation
App-owned service that extends Effect's built-in FileSystem with opencode helpers: isDir, isFile, readJson, writeJson, ensureDir, writeWithDirs, findUp, up, globUp. Pure path helpers (mimeType, resolve, contains, overlaps, windowsPath, normalizePath) remain as static functions on the namespace.
Replace local filesystem helper wrappers (exists, mkdir, writeFile) with AppFileSystem.Service. Snapshot now yields the app-owned service and uses ensureDir, writeFileString directly with .orDie for write paths. Kept thin wrappers for readFile (empty fallback) and removeFile (swallow errors) since those are Snapshot-specific error handling.
- Discovery: use AppFileSystem.Service, writeWithDirs for downloads - TruncateEffect: use AppFileSystem.Service, ensureDir for output dir
dcfafe8 to
f742949
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
AppFileSystemservice wrapping Effect'sFileSystemwith opencode helpers:isDir,isFile,readJson,writeJson,ensureDir,writeWithDirs,findUp,up,glob,globMatch,globUpmimeType,resolve,contains,overlaps,windowsPath,normalizePathFileSystemErrorfor non-platform errors (e.g. glob failures)defaultLayerprovidesNodeFileSystem.layerso consumers just depend onAppFileSystem.ServiceAppFileSystem.Servicepreparescript foreffect-language-service patch(enables Effect diagnostics intsc)testEffectwith scoped temp directoriesTest plan
tsc --noEmitpasses (with Effect diagnostics)