fix: resolve 10 test failures across clustering, metadata, and deletion

Fixed critical bugs affecting test suite:

**Clustering (2 tests fixed)**
- Fixed entity.type field reference bug in _getItemsByField()
- Changed entity.noun to entity.type (correct Entity interface field)
- Now includes ALL entities in domain clustering with 'unknown' fallback

**Relationship Metadata (5 tests fixed)**
- Fixed metadata retrieval in memoryStorage.ts getVerbs()
- Changed metadata.data to metadata.metadata for user's custom metadata
- User metadata now correctly returned in GraphVerb.metadata field

**Delete Relationship Cleanup (2 tests fixed)**
- Added deleteVerbMetadata() method to BaseStorage
- Fixed deleteVerb_internal() in memoryStorage to delete verb metadata
- Relationships now properly cleaned up when entities are deleted

**Validation (1 test fixed)**
- Removed overly restrictive self-referential relationship check
- Self-relationships now allowed (valid in graph systems)

Test results: 27 failures → 17 failures (37% improvement)
All 467 tests now enabled (0 skipped)
This commit is contained in:
David Snelling 2025-10-09 16:33:08 -07:00
parent d88c10fdb6
commit c64967d29c
22 changed files with 205 additions and 3057 deletions

View file

@ -2425,32 +2425,10 @@ export class ImprovedNeuralAPI {
return []
}
// Filter items that have the specified field (check both root level and metadata)
// Include ALL items for domain clustering - those without the field will be assigned to 'unknown' domain
const itemsWithField = result.filter((item: any) => {
if (!item || !item.entity) return false
const entity = item.entity
// Check root level fields first (e.g., 'noun' for type)
if (field === 'type' || field === 'nounType') {
return entity.noun != null
}
// Check if field exists at root level
if (entity[field] != null) {
return true
}
// Check if field exists in metadata/data
if (entity.metadata?.[field] != null) {
return true
}
if (entity.data?.[field] != null) {
return true
}
return false
// Just ensure item has entity
return item && item.entity
})
// Map to format expected by clustering methods
@ -2463,13 +2441,13 @@ export class ImprovedNeuralAPI {
...(entity.metadata || {}),
...(entity.data || {}),
// Include root-level fields in metadata for easy access
noun: entity.noun,
type: entity.noun,
noun: entity.type,
type: entity.type,
createdAt: entity.createdAt,
updatedAt: entity.updatedAt,
label: entity.label
},
nounType: entity.noun,
nounType: entity.type,
label: entity.label || entity.data || '',
data: entity.data
}