CRITICAL FIX for Entity_* placeholder names in multi-sheet Excel imports
Root Cause:
- Column detection ran globally on first row of all combined sheets
- Different sheets have different column structures (Term vs Name, etc.)
- Concepts sheet: [Term, Definition] → detected 'Term' column ✅
- Characters sheet: [Name, Description] → looked for 'Term' column ❌
- Result: Characters/Places/Other fell back to Entity_* placeholders
Fix:
- Group rows by sheet (_sheet field)
- Detect columns per-sheet, not globally
- Each sheet now uses its own column mapping
- Characters/Places sheets now correctly find 'Name' column
Impact:
- Concepts: Still work (no change)
- Characters/Places/Other: NOW USE ACTUAL NAMES! 🎉
Also removed debug logging from v4.8.5 (performance overhead)
Fixes: Workshop File Explorer showing Entity_* instead of real names
Ref: BRAINY_V4.8.4_VFS_UNDEFINED_NAMES_BUG.md
- Add debug logging to VFS readdir() to show children and VFSDirent structure
- Add debug logging to PathResolver.getChildren() to trace entity retrieval
- Add debug logging to convertNounToEntity() to trace metadata extraction
- Helps diagnose v4.8.4 VFS undefined names bug reported by Workshop team
Ref: BRAINY_V4.8.4_VFS_UNDEFINED_NAMES_BUG.md
- Remove includeVFS parameter and broken isVFS filtering logic
- Add excludeVFS parameter for optional VFS entity filtering
- VFS entities now part of knowledge graph by default
- Enable O(1) graph adjacency optimizations for VFS operations
- Update all VFS projections and PathResolver
- Add comprehensive VFS visibility documentation
This fixes the bug where VFS operations returned empty results due to
operator object mismatch in storage adapters. VFS relationships now use
proper graph traversal without metadata filtering.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
When multiple root directory entities exist, initializeRoot() was using
the wrong field name to sort by creation time, causing it to select the
NEWER root (no children) instead of the OLDER root (with children).
Changed from metadata.createdAt (doesn't exist) to entity.createdAt
(correct field). This ensures VFS correctly uses the root with all the
Contains relationships.
Fixes Workshop File Explorer showing 0 files despite 579 VFS entities
being created during import.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
CRITICAL BUG FIX - VFS Files Were Completely Invisible
Workshop Team Issue:
- Import created 569 VFS files
- vfs.readdir('/') returned 0 items
- VFS was 100% unusable
Root Cause:
v4.4.0 added includeVFS to brain.find() but FORGOT brain.getRelations().
PathResolver.getChildren() calls getRelations() to find VFS relationships,
but those were being excluded by default - making ALL VFS files invisible!
Fix:
1. Add includeVFS parameter to GetRelationsParams interface
2. Wire includeVFS filtering in brain.getRelations()
- Excludes VFS relationships by default (metadata.isVFS != true)
- Include them when includeVFS: true
3. Update VFS to mark all relationships with metadata: { isVFS: true }
- 7 relate() calls updated in VirtualFileSystem.ts
4. Update PathResolver to use includeVFS: true
- resolveChild() line 200
- getChildren() line 229
Impact:
- VFS is now fully functional again
- Consistent with v4.4.0 architecture (VFS separate from knowledge graph)
- All APIs now have includeVFS where needed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
CRITICAL FIX: VFS was using incorrect field names in where clauses
- Metadata index stores flat fields: path, vfsType, name
- VFS queried with: 'metadata.path', 'metadata.vfsType' (wrong!)
- Fixed to use correct field names in where clauses
Changes:
- initializeRoot() now uses correct where clause (no workaround needed)
- Added isVFS flag to all VFS entities (mkdir, writeFile, root)
- Updated VFSMetadata type to include isVFS field
- Removed PathResolver fallback (production code, no fallbacks)
This fixes:
- Duplicate root entities (Workshop team had ~10 roots!)
- VFS queries now work correctly with metadata index
- Clean separation between VFS and knowledge graph entities
Production-ready: No mocks, no fallbacks, no workarounds
- Replace metadata path queries with brain.getRelations() API
- Use graph traversal for parent-child relationships via VerbType.Contains
- Remove fallback metadata queries - trust graph relationships completely
- Fix getChildren() to properly query relationship graph
- Update getRelated() and getRelationships() to use native Brainy APIs
This enables full graph benefits: indexes, optimizations, and visualizations
now work correctly with VFS. The filesystem structure is now a true graph
using Brainy's native relationship system.
Co-Authored-By: Claude <noreply@anthropic.com>
Add production-ready Virtual File System with intelligent Knowledge Layer:
Core VFS Features:
- Complete file system operations (read, write, mkdir, etc.)
- Intelligent PathResolver with 4-layer caching system
- Chunked storage for large files with real compression
- Embedding generation for semantic operations
- File relationships and metadata tracking
- Import functionality from local filesystem
Knowledge Layer Integration:
- EventRecorder for complete file history and temporal coupling
- SemanticVersioning with content-based change detection
- PersistentEntitySystem for character/entity tracking across files
- ConceptSystem for universal concept mapping and graphs
- GitBridge for import/export between VFS and Git repositories
Architecture:
- KnowledgeAugmentation properly integrated into Brainy augmentation system
- KnowledgeLayer wrapper provides real-time VFS operation interception
- Background processing ensures VFS operations remain fast
- All components use real Brainy embed() method for embeddings
- Support for creative writing, coding projects, and project management
Technical Implementation:
- Fixed all stub/mock implementations with real working code
- TypeScript compilation passes without errors
- Comprehensive test suite demonstrating all features
- Documentation covering architecture and usage patterns
- Backwards compatible with existing Brainy functionality
This enables scenarios like writing books with persistent characters,
managing coding projects with concept tracking, and complete project
coordination with intelligent file relationships.