brainy/fix-addverb.cjs
David Snelling fb80808f44 feat: Remove dangerous getAllNouns/getAllVerbs methods, add safe pagination
BREAKING CHANGE: Removed getAllNouns() and getAllVerbs() from StorageAdapter interface
These methods could cause expensive full scans on cloud storage (S3/R2) leading to
high costs and performance issues. Replaced with safe paginated methods.

Changes:
- Remove getAllNouns/getAllVerbs from StorageAdapter interface and implementations
- Add internal optimization methods for intelligent preloading when safe
- Fix OPFS storage file naming consistency (.json extension)
- Fix S3 high-volume mode detection thresholds (was too aggressive)
- Fix TypeScript compilation errors with async methods
- Update all tests to use paginated methods

Performance:
- Add smart dataset size detection for automatic optimization
- Maintain all internal performance optimizations through safe preloading
- Only preload data in read-only mode or when dataset is small (<10k entities)

Fixes:
- Fix intelligent verb scoring tests metadata structure
- Fix S3 storage getVerbsBySource/Target/Type methods
- Fix memory usage in search operations using pagination

Docs:
- Add comprehensive storage architecture documentation
- Document known bash redirection issue
- Update README with architecture doc link

All affected tests passing
2025-08-10 16:25:12 -07:00

27 lines
No EOL
2.6 KiB
JavaScript

const fs = require('fs');
const filePath = '/home/dpsifr/Projects/brainy/tests/intelligent-verb-scoring.test.ts';
let content = fs.readFileSync(filePath, 'utf8');
// Fix addVerb calls pattern: addVerb(src, dst, 'relation', undefined, {
const fixes = [
["addVerb('entity1', 'entity2', 'hasRelation', undefined, {", "addVerb('entity1', 'entity2', undefined, { type: 'hasRelation',"],
["addVerb('user1', 'project1', 'worksOn', undefined, { autoCreateMissingNouns: true })", "addVerb('user1', 'project1', undefined, { type: 'worksOn', autoCreateMissingNouns: true })"],
["addVerb('entity1', 'entity2', 'testRelation', undefined, { autoCreateMissingNouns: true })", "addVerb('entity1', 'entity2', undefined, { type: 'testRelation', autoCreateMissingNouns: true })"],
["addVerb('entity3', 'entity4', 'testRelation', undefined, { autoCreateMissingNouns: true })", "addVerb('entity3', 'entity4', undefined, { type: 'testRelation', autoCreateMissingNouns: true })"],
["addVerb('entity1', 'entity2', 'decayingRelation', undefined, { autoCreateMissingNouns: true })", "addVerb('entity1', 'entity2', undefined, { type: 'decayingRelation', autoCreateMissingNouns: true })"],
["addVerb('entity1', `entity${i+3}`, 'testRelation', undefined, { autoCreateMissingNouns: true })", "addVerb('entity1', `entity${i+3}`, undefined, { type: 'testRelation', autoCreateMissingNouns: true })"],
["addVerb('entity1', 'entity2', 'develops', undefined, { autoCreateMissingNouns: true })", "addVerb('entity1', 'entity2', undefined, { type: 'develops', autoCreateMissingNouns: true })"],
["addVerb('entity1', 'entity2', 'explicitRel', undefined, {", "addVerb('entity1', 'entity2', undefined, { type: 'explicitRel',"],
["addVerb('entity1', 'entity2', 'smartRel', undefined, { autoCreateMissingNouns: true })", "addVerb('entity1', 'entity2', undefined, { type: 'smartRel', autoCreateMissingNouns: true })"],
["addVerb('person1', 'project1', 'worksOn', undefined, { autoCreateMissingNouns: true })", "addVerb('person1', 'project1', undefined, { type: 'worksOn', autoCreateMissingNouns: true })"],
["addVerb('company1', 'person1', 'employs', undefined, { autoCreateMissingNouns: true })", "addVerb('company1', 'person1', undefined, { type: 'employs', autoCreateMissingNouns: true })"],
["addVerb('company1', 'project1', 'owns', undefined, { autoCreateMissingNouns: true })", "addVerb('company1', 'project1', undefined, { type: 'owns', autoCreateMissingNouns: true })"]
];
fixes.forEach(([from, to]) => {
content = content.replace(from, to);
});
fs.writeFileSync(filePath, content);
console.log('Fixed addVerb calls in intelligent-verb-scoring.test.ts');