Skip to content

feature/vfs 2602#165

Merged
emesal merged 22 commits intodevfrom
feature/vfs-2602
Feb 18, 2026
Merged

feature/vfs 2602#165
emesal merged 22 commits intodevfrom
feature/vfs-2602

Conversation

@emesal
Copy link
Owner

@emesal emesal commented Feb 18, 2026

  • feat(vfs): add VfsPath newtype with validation and URI parsing
  • feat(vfs): add backend trait, types, and permission model
  • fix(context): reject reserved VFS caller names (SYSTEM)
  • feat(vfs): add LocalBackend (disk-based VFS storage)
  • feat(vfs): add Vfs router with zone-based permission enforcement
  • feat(vfs): add VfsConfig and wire Vfs into AppState
  • feat(vfs): add dedicated VFS tools (list, info, copy, move, mkdir, delete)
  • fix(vfs): validate backend config, eager dir creation, dedup require_str_param
  • feat(vfs): wire vfs:// prefix into existing file and coding tools
  • feat(vfs): wire VFS tools into tool execution pipeline
  • test(vfs): add comprehensive multi-context integration test
  • docs: add VFS documentation
  • fix(vfs): fix OS permission gate applied to vfs:// paths in file tools
  • fix(vfs): VfsPath::join explicitly rejects '.' components, add test
  • fix(vfs): replace blocking Path::exists()/is_dir() with tokio::fs::metadata in LocalBackend
  • docs(vfs): document multi_thread runtime requirement on vfs_block_on
  • docs(vfs): document intentional world-readable read in execute_file_edit_vfs
  • refactor(vfs): rename VFS_URI_PREFIX -> VFS_URI_SCHEME, add clarifying comment
  • docs(vfs): document VfsConfig as intentionally global-only, not in ResolvedConfig
  • feat(vfs): add Ord, PartialOrd, Serialize, Deserialize to VfsPath
  • style: fix clippy warnings (ptr_arg, module_inception)

…str_param

- Reject unknown VFS backends at AppState init (only "local" built in)
- Eagerly create vfs/ directory alongside contexts/, prompts/, plugins/
- Extract require_str_param to tools::builtin (was duplicated 3x)
Exercises the full VFS workflow: SYSTEM writes to /sys/, alice/bob
cross-permission checks, copy/move/delete with permission enforcement,
list/metadata operations, mkdir with zone restrictions.
- docs/vfs.md: namespace layout, permission model, vfs:// URI scheme,
  dedicated tools, configuration, backend extensibility, storage layout
- docs/architecture.md: add vfs/ to storage layout and file listing
- AGENTS.md: add docs/vfs.md link
Two critical bugs: write_file and read-only file tools with vfs:// paths
were routed through OS permission hooks/classify_file_path, causing
spurious denials. Early-exit added at top of is_file_tool branch when
path is a vfs:// URI; VFS zone permissions enforce access inside execute_file_tool.

Also: deduplicate vfs_block_on (pub(crate) in file_tools, imported in
coding_tools); fix resolve_path to error on malformed VFS URIs instead of
silently falling to OS path; remove pre-declared content_str binding in
execute_file_grep; document ReplaceString early return; tighten ResolvedPath
visibility to pub(crate); remove unused ErrorKind import in vfs_tools; add
dispatch-layer tests through execute_tool_pure.
@emesal emesal merged commit 78bce3a into dev Feb 18, 2026
21 checks passed
@emesal emesal deleted the feature/vfs-2602 branch February 18, 2026 19:27
@emesal emesal restored the feature/vfs-2602 branch February 18, 2026 19:39
@emesal emesal deleted the feature/vfs-2602 branch February 19, 2026 05:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

Comments