Skip to content

v1.0.0

@nickytonline nickytonline tagged this 04 Oct 01:55
Replace node:fs/promises in the workspace tools with the FileSystem
service from @effect/platform, provided by NodeFileSystem.layer at the
tool boundary (callWorkspaceTool takes the layer, so tests or other
runtimes can swap it).

FileSystem has no lstat and readDirectory returns bare names, so stat
now follows symlinks. To keep list/search from following a link out of
the workspace, every walked entry is resolved with realPath and dropped
unless it stays inside the root, and walks track visited real
directories so a link back to an ancestor can't loop. Tests cover both.

Refusals are a tagged WorkspaceError; platform errors map to isError
results via catchTags.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Assets 2
Loading