refactor(file): effectify FileService as scoped service

Convert File namespace functions (init, status, read, list, search) to
FileService class extending ServiceMap.Service with Effect.fn methods.
File cache uses lazy initialization via init() matching original
Instance.state semantics. Legacy promise facade preserved.
This commit is contained in:
Kit Langton
2026-03-15 21:37:43 -04:00
parent 692a43a0c8
commit 577f9c2bab
2 changed files with 632 additions and 557 deletions

View File

@@ -8,6 +8,7 @@ import { FileWatcherService } from "@/file/watcher"
import { VcsService } from "@/project/vcs"
import { FileTimeService } from "@/file/time"
import { FormatService } from "@/format"
import { FileService } from "@/file"
import { Instance } from "@/project/instance"
export { InstanceContext } from "./instance-context"
@@ -20,6 +21,7 @@ export type InstanceServices =
| VcsService
| FileTimeService
| FormatService
| FileService
function lookup(directory: string) {
const project = Instance.project
@@ -32,6 +34,7 @@ function lookup(directory: string) {
Layer.fresh(VcsService.layer),
Layer.fresh(FileTimeService.layer).pipe(Layer.orDie),
Layer.fresh(FormatService.layer),
Layer.fresh(FileService.layer),
).pipe(Layer.provide(ctx))
}

File diff suppressed because it is too large Load Diff