@soulcraft/brainy 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +53 -3
- package/README.md +353 -110
- package/bin/brainy.js +340 -62
- package/dist/api/ConfigAPI.d.ts +67 -0
- package/dist/api/ConfigAPI.js +166 -0
- package/dist/api/DataAPI.d.ts +123 -0
- package/dist/api/DataAPI.js +391 -0
- package/dist/api/SecurityAPI.d.ts +50 -0
- package/dist/api/SecurityAPI.js +139 -0
- package/dist/api/UniversalImportAPI.d.ts +134 -0
- package/dist/api/UniversalImportAPI.js +615 -0
- package/dist/augmentationManager.js +12 -7
- package/dist/augmentationPipeline.d.ts +0 -61
- package/dist/augmentationPipeline.js +0 -87
- package/dist/augmentationRegistry.d.ts +1 -1
- package/dist/augmentationRegistry.js +1 -1
- package/dist/augmentations/apiServerAugmentation.d.ts +27 -1
- package/dist/augmentations/apiServerAugmentation.js +290 -9
- package/dist/augmentations/auditLogAugmentation.d.ts +109 -0
- package/dist/augmentations/auditLogAugmentation.js +358 -0
- package/dist/augmentations/batchProcessingAugmentation.d.ts +3 -2
- package/dist/augmentations/batchProcessingAugmentation.js +123 -22
- package/dist/augmentations/brainyAugmentation.d.ts +142 -8
- package/dist/augmentations/brainyAugmentation.js +179 -2
- package/dist/augmentations/cacheAugmentation.d.ts +8 -5
- package/dist/augmentations/cacheAugmentation.js +116 -17
- package/dist/augmentations/conduitAugmentations.d.ts +2 -2
- package/dist/augmentations/conduitAugmentations.js +2 -2
- package/dist/augmentations/configResolver.d.ts +122 -0
- package/dist/augmentations/configResolver.js +440 -0
- package/dist/augmentations/connectionPoolAugmentation.d.ts +3 -1
- package/dist/augmentations/connectionPoolAugmentation.js +37 -12
- package/dist/augmentations/defaultAugmentations.d.ts +14 -10
- package/dist/augmentations/defaultAugmentations.js +16 -11
- package/dist/augmentations/discovery/catalogDiscovery.d.ts +142 -0
- package/dist/augmentations/discovery/catalogDiscovery.js +249 -0
- package/dist/augmentations/discovery/localDiscovery.d.ts +84 -0
- package/dist/augmentations/discovery/localDiscovery.js +246 -0
- package/dist/augmentations/discovery/runtimeLoader.d.ts +97 -0
- package/dist/augmentations/discovery/runtimeLoader.js +337 -0
- package/dist/augmentations/discovery.d.ts +152 -0
- package/dist/augmentations/discovery.js +441 -0
- package/dist/augmentations/display/cache.d.ts +130 -0
- package/dist/augmentations/display/cache.js +319 -0
- package/dist/augmentations/display/fieldPatterns.d.ts +52 -0
- package/dist/augmentations/display/fieldPatterns.js +393 -0
- package/dist/augmentations/display/iconMappings.d.ts +57 -0
- package/dist/augmentations/display/iconMappings.js +68 -0
- package/dist/augmentations/display/intelligentComputation.d.ts +109 -0
- package/dist/augmentations/display/intelligentComputation.js +462 -0
- package/dist/augmentations/display/types.d.ts +203 -0
- package/dist/augmentations/display/types.js +7 -0
- package/dist/augmentations/entityRegistryAugmentation.d.ts +3 -1
- package/dist/augmentations/entityRegistryAugmentation.js +5 -1
- package/dist/augmentations/indexAugmentation.d.ts +5 -3
- package/dist/augmentations/indexAugmentation.js +5 -2
- package/dist/augmentations/intelligentVerbScoringAugmentation.d.ts +24 -7
- package/dist/augmentations/intelligentVerbScoringAugmentation.js +111 -27
- package/dist/augmentations/manifest.d.ts +176 -0
- package/dist/augmentations/manifest.js +8 -0
- package/dist/augmentations/marketplace/AugmentationMarketplace.d.ts +168 -0
- package/dist/augmentations/marketplace/AugmentationMarketplace.js +329 -0
- package/dist/augmentations/marketplace/cli.d.ts +47 -0
- package/dist/augmentations/marketplace/cli.js +265 -0
- package/dist/augmentations/metricsAugmentation.d.ts +3 -3
- package/dist/augmentations/metricsAugmentation.js +2 -2
- package/dist/augmentations/monitoringAugmentation.d.ts +3 -3
- package/dist/augmentations/monitoringAugmentation.js +2 -2
- package/dist/augmentations/neuralImport.d.ts +1 -1
- package/dist/augmentations/neuralImport.js +4 -4
- package/dist/augmentations/rateLimitAugmentation.d.ts +82 -0
- package/dist/augmentations/rateLimitAugmentation.js +321 -0
- package/dist/augmentations/requestDeduplicatorAugmentation.d.ts +2 -2
- package/dist/augmentations/requestDeduplicatorAugmentation.js +1 -1
- package/dist/augmentations/storageAugmentation.d.ts +1 -1
- package/dist/augmentations/storageAugmentation.js +2 -2
- package/dist/augmentations/storageAugmentations.d.ts +37 -8
- package/dist/augmentations/storageAugmentations.js +204 -15
- package/dist/augmentations/synapseAugmentation.d.ts +1 -1
- package/dist/augmentations/synapseAugmentation.js +35 -16
- package/dist/augmentations/typeMatching/brainyTypes.d.ts +83 -0
- package/dist/augmentations/typeMatching/brainyTypes.js +425 -0
- package/dist/augmentations/typeMatching/intelligentTypeMatcher.d.ts +39 -59
- package/dist/augmentations/typeMatching/intelligentTypeMatcher.js +103 -389
- package/dist/augmentations/universalDisplayAugmentation.d.ts +191 -0
- package/dist/augmentations/universalDisplayAugmentation.js +371 -0
- package/dist/brainy-unified.d.ts +106 -0
- package/dist/brainy-unified.js +327 -0
- package/dist/brainy.d.ts +273 -0
- package/dist/brainy.js +1181 -0
- package/dist/brainyData.d.ts +56 -111
- package/dist/brainyData.js +912 -756
- package/dist/brainyDataV3.d.ts +186 -0
- package/dist/brainyDataV3.js +337 -0
- package/dist/browserFramework.d.ts +6 -6
- package/dist/browserFramework.js +11 -8
- package/dist/browserFramework.minimal.d.ts +5 -5
- package/dist/browserFramework.minimal.js +11 -8
- package/dist/config/distributedPresets-new.d.ts +118 -0
- package/dist/config/distributedPresets-new.js +318 -0
- package/dist/config/distributedPresets.d.ts +118 -0
- package/dist/config/distributedPresets.js +318 -0
- package/dist/config/extensibleConfig.d.ts +99 -0
- package/dist/config/extensibleConfig.js +268 -0
- package/dist/config/index.d.ts +17 -0
- package/dist/config/index.js +35 -0
- package/dist/config/modelAutoConfig.d.ts +32 -0
- package/dist/config/modelAutoConfig.js +139 -0
- package/dist/config/modelPrecisionManager.d.ts +42 -0
- package/dist/config/modelPrecisionManager.js +98 -0
- package/dist/config/sharedConfigManager.d.ts +67 -0
- package/dist/config/sharedConfigManager.js +215 -0
- package/dist/config/storageAutoConfig.d.ts +41 -0
- package/dist/config/storageAutoConfig.js +328 -0
- package/dist/config/zeroConfig.d.ts +68 -0
- package/dist/config/zeroConfig.js +301 -0
- package/dist/cortex/backupRestore.d.ts +2 -2
- package/dist/cortex/backupRestore.js +85 -27
- package/dist/cortex/healthCheck.d.ts +2 -2
- package/dist/cortex/neuralImport.d.ts +2 -2
- package/dist/cortex/neuralImport.js +18 -13
- package/dist/cortex/performanceMonitor.d.ts +2 -2
- package/dist/critical/model-guardian.d.ts +4 -0
- package/dist/critical/model-guardian.js +31 -11
- package/dist/demo.d.ts +4 -4
- package/dist/demo.js +7 -7
- package/dist/distributed/cacheSync.d.ts +112 -0
- package/dist/distributed/cacheSync.js +265 -0
- package/dist/distributed/coordinator.d.ts +193 -0
- package/dist/distributed/coordinator.js +548 -0
- package/dist/distributed/httpTransport.d.ts +120 -0
- package/dist/distributed/httpTransport.js +446 -0
- package/dist/distributed/index.d.ts +8 -0
- package/dist/distributed/index.js +5 -0
- package/dist/distributed/networkTransport.d.ts +132 -0
- package/dist/distributed/networkTransport.js +633 -0
- package/dist/distributed/queryPlanner.d.ts +104 -0
- package/dist/distributed/queryPlanner.js +327 -0
- package/dist/distributed/readWriteSeparation.d.ts +134 -0
- package/dist/distributed/readWriteSeparation.js +350 -0
- package/dist/distributed/shardManager.d.ts +114 -0
- package/dist/distributed/shardManager.js +357 -0
- package/dist/distributed/shardMigration.d.ts +110 -0
- package/dist/distributed/shardMigration.js +289 -0
- package/dist/distributed/storageDiscovery.d.ts +160 -0
- package/dist/distributed/storageDiscovery.js +551 -0
- package/dist/embeddings/CachedEmbeddings.d.ts +40 -0
- package/dist/embeddings/CachedEmbeddings.js +146 -0
- package/dist/embeddings/EmbeddingManager.d.ts +102 -0
- package/dist/embeddings/EmbeddingManager.js +291 -0
- package/dist/embeddings/SingletonModelManager.d.ts +95 -0
- package/dist/embeddings/SingletonModelManager.js +220 -0
- package/dist/embeddings/index.d.ts +12 -0
- package/dist/embeddings/index.js +16 -0
- package/dist/embeddings/lightweight-embedder.d.ts +0 -1
- package/dist/embeddings/lightweight-embedder.js +4 -12
- package/dist/embeddings/model-manager.d.ts +11 -0
- package/dist/embeddings/model-manager.js +43 -7
- package/dist/embeddings/universal-memory-manager.d.ts +1 -1
- package/dist/embeddings/universal-memory-manager.js +27 -67
- package/dist/embeddings/worker-embedding.js +4 -8
- package/dist/errors/brainyError.d.ts +5 -1
- package/dist/errors/brainyError.js +12 -0
- package/dist/examples/basicUsage.js +7 -4
- package/dist/graph/graphAdjacencyIndex.d.ts +96 -0
- package/dist/graph/graphAdjacencyIndex.js +288 -0
- package/dist/graph/pathfinding.js +4 -2
- package/dist/hnsw/scaledHNSWSystem.js +11 -2
- package/dist/importManager.js +8 -5
- package/dist/index.d.ts +17 -22
- package/dist/index.js +37 -23
- package/dist/mcp/brainyMCPAdapter.d.ts +4 -4
- package/dist/mcp/brainyMCPAdapter.js +5 -5
- package/dist/mcp/brainyMCPService.d.ts +3 -3
- package/dist/mcp/brainyMCPService.js +3 -11
- package/dist/mcp/mcpAugmentationToolset.js +20 -30
- package/dist/neural/embeddedPatterns.d.ts +1 -1
- package/dist/neural/embeddedPatterns.js +2 -2
- package/dist/neural/entityExtractor.d.ts +65 -0
- package/dist/neural/entityExtractor.js +316 -0
- package/dist/neural/improvedNeuralAPI.d.ts +357 -0
- package/dist/neural/improvedNeuralAPI.js +2628 -0
- package/dist/neural/naturalLanguageProcessor.d.ts +155 -10
- package/dist/neural/naturalLanguageProcessor.js +941 -66
- package/dist/neural/naturalLanguageProcessorStatic.d.ts +2 -2
- package/dist/neural/naturalLanguageProcessorStatic.js +3 -3
- package/dist/neural/neuralAPI.js +8 -2
- package/dist/neural/patternLibrary.d.ts +57 -3
- package/dist/neural/patternLibrary.js +348 -13
- package/dist/neural/staticPatternMatcher.d.ts +2 -2
- package/dist/neural/staticPatternMatcher.js +2 -2
- package/dist/neural/types.d.ts +287 -0
- package/dist/neural/types.js +24 -0
- package/dist/shared/default-augmentations.d.ts +3 -3
- package/dist/shared/default-augmentations.js +5 -5
- package/dist/storage/adapters/baseStorageAdapter.d.ts +42 -0
- package/dist/storage/adapters/fileSystemStorage.d.ts +26 -2
- package/dist/storage/adapters/fileSystemStorage.js +218 -15
- package/dist/storage/adapters/memoryStorage.d.ts +4 -4
- package/dist/storage/adapters/memoryStorage.js +17 -12
- package/dist/storage/adapters/opfsStorage.d.ts +2 -2
- package/dist/storage/adapters/opfsStorage.js +2 -2
- package/dist/storage/adapters/s3CompatibleStorage.d.ts +2 -2
- package/dist/storage/adapters/s3CompatibleStorage.js +2 -2
- package/dist/storage/backwardCompatibility.d.ts +10 -78
- package/dist/storage/backwardCompatibility.js +17 -132
- package/dist/storage/baseStorage.d.ts +18 -2
- package/dist/storage/baseStorage.js +74 -3
- package/dist/storage/cacheManager.js +2 -2
- package/dist/storage/readOnlyOptimizations.js +8 -3
- package/dist/streaming/pipeline.d.ts +154 -0
- package/dist/streaming/pipeline.js +551 -0
- package/dist/triple/TripleIntelligence.d.ts +25 -110
- package/dist/triple/TripleIntelligence.js +4 -574
- package/dist/triple/TripleIntelligenceSystem.d.ts +159 -0
- package/dist/triple/TripleIntelligenceSystem.js +519 -0
- package/dist/types/apiTypes.d.ts +278 -0
- package/dist/types/apiTypes.js +33 -0
- package/dist/types/brainy.types.d.ts +308 -0
- package/dist/types/brainy.types.js +8 -0
- package/dist/types/brainyDataInterface.d.ts +5 -8
- package/dist/types/brainyDataInterface.js +2 -2
- package/dist/types/graphTypes.js +2 -2
- package/dist/utils/brainyTypes.d.ts +217 -0
- package/dist/utils/brainyTypes.js +261 -0
- package/dist/utils/cacheAutoConfig.d.ts +3 -3
- package/dist/utils/embedding.d.ts +9 -4
- package/dist/utils/embedding.js +89 -26
- package/dist/utils/enhancedLogger.d.ts +104 -0
- package/dist/utils/enhancedLogger.js +232 -0
- package/dist/utils/hybridModelManager.d.ts +19 -28
- package/dist/utils/hybridModelManager.js +36 -200
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/intelligentTypeMapper.d.ts +60 -0
- package/dist/utils/intelligentTypeMapper.js +349 -0
- package/dist/utils/metadataIndex.d.ts +118 -1
- package/dist/utils/metadataIndex.js +539 -16
- package/dist/utils/nodeVersionCheck.d.ts +24 -0
- package/dist/utils/nodeVersionCheck.js +65 -0
- package/dist/utils/paramValidation.d.ts +39 -0
- package/dist/utils/paramValidation.js +192 -0
- package/dist/utils/rateLimiter.d.ts +160 -0
- package/dist/utils/rateLimiter.js +271 -0
- package/dist/utils/statistics.d.ts +4 -4
- package/dist/utils/statistics.js +3 -3
- package/dist/utils/structuredLogger.d.ts +146 -0
- package/dist/utils/structuredLogger.js +394 -0
- package/dist/utils/textEncoding.js +2 -1
- package/dist/utils/typeValidation.d.ts +59 -0
- package/dist/utils/typeValidation.js +374 -0
- package/dist/utils/version.js +19 -3
- package/package.json +15 -4
- package/scripts/download-models.cjs +94 -20
- package/dist/augmentations/walAugmentation.d.ts +0 -109
- package/dist/augmentations/walAugmentation.js +0 -516
- package/dist/chat/BrainyChat.d.ts +0 -121
- package/dist/chat/BrainyChat.js +0 -396
- package/dist/chat/ChatCLI.d.ts +0 -61
- package/dist/chat/ChatCLI.js +0 -351
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BrainyTypes - Intelligent type detection using semantic embeddings
|
|
3
|
+
*
|
|
4
|
+
* This module uses our existing TransformerEmbedding and similarity functions
|
|
5
|
+
* to intelligently match data to our 31 noun types and 40 verb types.
|
|
6
|
+
*
|
|
7
|
+
* Features:
|
|
8
|
+
* - Semantic similarity matching using embeddings
|
|
9
|
+
* - Context-aware type detection
|
|
10
|
+
* - Confidence scoring
|
|
11
|
+
* - Caching for performance
|
|
12
|
+
*/
|
|
13
|
+
import { NounType, VerbType } from '../../types/graphTypes.js';
|
|
14
|
+
import { TransformerEmbedding } from '../../utils/embedding.js';
|
|
15
|
+
import { cosineDistance } from '../../utils/distance.js';
|
|
16
|
+
/**
|
|
17
|
+
* Type descriptions for semantic matching
|
|
18
|
+
* These descriptions are used to generate embeddings for each type
|
|
19
|
+
*/
|
|
20
|
+
const NOUN_TYPE_DESCRIPTIONS = {
|
|
21
|
+
// Core Entity Types
|
|
22
|
+
[NounType.Person]: 'person human individual user employee customer citizen member author creator agent actor participant',
|
|
23
|
+
[NounType.Organization]: 'organization company business corporation institution agency department team group committee board',
|
|
24
|
+
[NounType.Location]: 'location place address city country region area zone coordinate position site venue building',
|
|
25
|
+
[NounType.Thing]: 'thing object item product device equipment tool instrument asset artifact material physical tangible',
|
|
26
|
+
[NounType.Concept]: 'concept idea theory principle philosophy belief value abstract intangible notion thought',
|
|
27
|
+
[NounType.Event]: 'event occurrence incident activity happening meeting conference celebration milestone timestamp date',
|
|
28
|
+
// Digital/Content Types
|
|
29
|
+
[NounType.Document]: 'document file report article paper text pdf word contract agreement record documentation',
|
|
30
|
+
[NounType.Media]: 'media image photo video audio music podcast multimedia graphic visualization animation',
|
|
31
|
+
[NounType.File]: 'file digital data binary code script program software archive package bundle',
|
|
32
|
+
[NounType.Message]: 'message email chat communication notification alert announcement broadcast transmission',
|
|
33
|
+
[NounType.Content]: 'content information data text material resource publication post blog webpage',
|
|
34
|
+
// Collection Types
|
|
35
|
+
[NounType.Collection]: 'collection group set list array category folder directory catalog inventory database',
|
|
36
|
+
[NounType.Dataset]: 'dataset data table spreadsheet database records statistics metrics measurements analysis',
|
|
37
|
+
// Business/Application Types
|
|
38
|
+
[NounType.Product]: 'product item merchandise offering service feature application software solution package',
|
|
39
|
+
[NounType.Service]: 'service offering subscription support maintenance utility function capability',
|
|
40
|
+
[NounType.User]: 'user account profile member subscriber customer client participant identity credentials',
|
|
41
|
+
[NounType.Task]: 'task action todo item job assignment duty responsibility activity step procedure',
|
|
42
|
+
[NounType.Project]: 'project initiative program campaign effort endeavor plan scheme venture undertaking',
|
|
43
|
+
// Descriptive Types
|
|
44
|
+
[NounType.Process]: 'process workflow procedure method algorithm sequence pipeline operation routine protocol',
|
|
45
|
+
[NounType.State]: 'state status condition phase stage mode situation circumstance configuration setting',
|
|
46
|
+
[NounType.Role]: 'role position title function responsibility duty job capacity designation authority',
|
|
47
|
+
[NounType.Topic]: 'topic subject theme category tag keyword area domain field discipline specialty',
|
|
48
|
+
[NounType.Language]: 'language dialect locale tongue vernacular communication speech linguistics vocabulary',
|
|
49
|
+
[NounType.Currency]: 'currency money dollar euro pound yen bitcoin payment financial monetary unit',
|
|
50
|
+
[NounType.Measurement]: 'measurement metric quantity value amount size dimension weight height volume distance',
|
|
51
|
+
// Scientific/Research Types
|
|
52
|
+
[NounType.Hypothesis]: 'hypothesis theory proposition thesis assumption premise conjecture speculation prediction',
|
|
53
|
+
[NounType.Experiment]: 'experiment test trial study research investigation analysis observation examination',
|
|
54
|
+
// Legal/Regulatory Types
|
|
55
|
+
[NounType.Contract]: 'contract agreement deal treaty pact covenant license terms conditions policy',
|
|
56
|
+
[NounType.Regulation]: 'regulation law rule policy standard compliance requirement guideline ordinance statute',
|
|
57
|
+
// Technical Infrastructure Types
|
|
58
|
+
[NounType.Interface]: 'interface API endpoint protocol specification contract schema definition connection',
|
|
59
|
+
[NounType.Resource]: 'resource infrastructure server database storage compute memory bandwidth capacity asset'
|
|
60
|
+
};
|
|
61
|
+
const VERB_TYPE_DESCRIPTIONS = {
|
|
62
|
+
// Core Relationship Types
|
|
63
|
+
[VerbType.RelatedTo]: 'related connected associated linked correlated relevant pertinent applicable',
|
|
64
|
+
[VerbType.Contains]: 'contains includes holds stores encompasses comprises consists incorporates',
|
|
65
|
+
[VerbType.PartOf]: 'part component element member piece portion section segment constituent',
|
|
66
|
+
[VerbType.LocatedAt]: 'located situated positioned placed found exists resides occupies',
|
|
67
|
+
[VerbType.References]: 'references cites mentions points links refers quotes sources',
|
|
68
|
+
// Temporal/Causal Types
|
|
69
|
+
[VerbType.Precedes]: 'precedes before earlier prior previous antecedent preliminary foregoing',
|
|
70
|
+
[VerbType.Succeeds]: 'succeeds follows after later subsequent next ensuing succeeding',
|
|
71
|
+
[VerbType.Causes]: 'causes triggers induces produces generates results influences affects',
|
|
72
|
+
[VerbType.DependsOn]: 'depends requires needs relies necessitates contingent prerequisite',
|
|
73
|
+
[VerbType.Requires]: 'requires needs demands necessitates mandates obliges compels entails',
|
|
74
|
+
// Creation/Transformation Types
|
|
75
|
+
[VerbType.Creates]: 'creates makes produces generates builds constructs forms establishes',
|
|
76
|
+
[VerbType.Transforms]: 'transforms converts changes modifies alters transitions morphs evolves',
|
|
77
|
+
[VerbType.Becomes]: 'becomes turns evolves transforms changes transitions develops grows',
|
|
78
|
+
[VerbType.Modifies]: 'modifies changes updates alters edits revises adjusts adapts',
|
|
79
|
+
[VerbType.Consumes]: 'consumes uses utilizes depletes expends absorbs takes processes',
|
|
80
|
+
// Ownership/Attribution Types
|
|
81
|
+
[VerbType.Owns]: 'owns possesses holds controls manages administers governs maintains',
|
|
82
|
+
[VerbType.AttributedTo]: 'attributed credited assigned ascribed authored written composed',
|
|
83
|
+
[VerbType.CreatedBy]: 'created made produced generated built developed authored written',
|
|
84
|
+
[VerbType.BelongsTo]: 'belongs property possession part member affiliate associated owned',
|
|
85
|
+
// Social/Organizational Types
|
|
86
|
+
[VerbType.MemberOf]: 'member participant affiliate associate belongs joined enrolled registered',
|
|
87
|
+
[VerbType.WorksWith]: 'works collaborates cooperates partners teams assists helps supports',
|
|
88
|
+
[VerbType.FriendOf]: 'friend companion buddy pal acquaintance associate connection relationship',
|
|
89
|
+
[VerbType.Follows]: 'follows subscribes tracks monitors watches observes trails pursues',
|
|
90
|
+
[VerbType.Likes]: 'likes enjoys appreciates favors prefers admires values endorses',
|
|
91
|
+
[VerbType.ReportsTo]: 'reports answers subordinate accountable responsible supervised managed',
|
|
92
|
+
[VerbType.Supervises]: 'supervises manages oversees directs leads controls guides administers',
|
|
93
|
+
[VerbType.Mentors]: 'mentors teaches guides coaches instructs trains advises counsels',
|
|
94
|
+
[VerbType.Communicates]: 'communicates talks speaks messages contacts interacts corresponds exchanges',
|
|
95
|
+
// Descriptive/Functional Types
|
|
96
|
+
[VerbType.Describes]: 'describes explains details documents specifies outlines depicts characterizes',
|
|
97
|
+
[VerbType.Defines]: 'defines specifies establishes determines sets declares identifies designates',
|
|
98
|
+
[VerbType.Categorizes]: 'categorizes classifies groups sorts organizes arranges labels tags',
|
|
99
|
+
[VerbType.Measures]: 'measures quantifies gauges assesses evaluates calculates determines counts',
|
|
100
|
+
[VerbType.Evaluates]: 'evaluates assesses analyzes reviews examines appraises judges rates',
|
|
101
|
+
[VerbType.Uses]: 'uses utilizes employs applies operates handles manipulates exploits',
|
|
102
|
+
[VerbType.Implements]: 'implements executes realizes performs accomplishes carries delivers completes',
|
|
103
|
+
[VerbType.Extends]: 'extends expands enhances augments amplifies broadens enlarges develops',
|
|
104
|
+
// Enhanced Relationships
|
|
105
|
+
[VerbType.Inherits]: 'inherits derives extends receives obtains acquires succeeds legacy',
|
|
106
|
+
[VerbType.Conflicts]: 'conflicts contradicts opposes clashes disputes disagrees incompatible inconsistent',
|
|
107
|
+
[VerbType.Synchronizes]: 'synchronizes coordinates aligns harmonizes matches corresponds parallels coincides',
|
|
108
|
+
[VerbType.Competes]: 'competes rivals contends contests challenges opposes vies struggles'
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* BrainyTypes - Intelligent type detection for nouns and verbs
|
|
112
|
+
*/
|
|
113
|
+
export class BrainyTypes {
|
|
114
|
+
constructor() {
|
|
115
|
+
this.nounEmbeddings = new Map();
|
|
116
|
+
this.verbEmbeddings = new Map();
|
|
117
|
+
this.initialized = false;
|
|
118
|
+
this.cache = new Map();
|
|
119
|
+
this.embedder = new TransformerEmbedding({ verbose: false });
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Initialize the type matcher by generating embeddings for all types
|
|
123
|
+
*/
|
|
124
|
+
async init() {
|
|
125
|
+
if (this.initialized)
|
|
126
|
+
return;
|
|
127
|
+
await this.embedder.init();
|
|
128
|
+
// Generate embeddings for noun types
|
|
129
|
+
for (const [type, description] of Object.entries(NOUN_TYPE_DESCRIPTIONS)) {
|
|
130
|
+
const embedding = await this.embedder.embed(description);
|
|
131
|
+
this.nounEmbeddings.set(type, embedding);
|
|
132
|
+
}
|
|
133
|
+
// Generate embeddings for verb types
|
|
134
|
+
for (const [type, description] of Object.entries(VERB_TYPE_DESCRIPTIONS)) {
|
|
135
|
+
const embedding = await this.embedder.embed(description);
|
|
136
|
+
this.verbEmbeddings.set(type, embedding);
|
|
137
|
+
}
|
|
138
|
+
this.initialized = true;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Match an object to the most appropriate noun type
|
|
142
|
+
*/
|
|
143
|
+
async matchNounType(obj) {
|
|
144
|
+
await this.init();
|
|
145
|
+
// Create a text representation of the object for embedding
|
|
146
|
+
const textRepresentation = this.createTextRepresentation(obj);
|
|
147
|
+
// Check cache
|
|
148
|
+
const cacheKey = `noun:${textRepresentation}`;
|
|
149
|
+
if (this.cache.has(cacheKey)) {
|
|
150
|
+
return this.cache.get(cacheKey);
|
|
151
|
+
}
|
|
152
|
+
// Generate embedding for the input
|
|
153
|
+
const inputEmbedding = await this.embedder.embed(textRepresentation);
|
|
154
|
+
// Calculate similarities to all noun types
|
|
155
|
+
const similarities = [];
|
|
156
|
+
for (const [type, typeEmbedding] of this.nounEmbeddings.entries()) {
|
|
157
|
+
// Convert cosine distance to similarity (1 - distance)
|
|
158
|
+
const similarity = 1 - cosineDistance(inputEmbedding, typeEmbedding);
|
|
159
|
+
similarities.push({ type, similarity });
|
|
160
|
+
}
|
|
161
|
+
// Sort by similarity (highest first)
|
|
162
|
+
similarities.sort((a, b) => b.similarity - a.similarity);
|
|
163
|
+
// Apply heuristic rules for common patterns
|
|
164
|
+
const heuristicType = this.applyNounHeuristics(obj);
|
|
165
|
+
if (heuristicType) {
|
|
166
|
+
// Boost the heuristic type's confidence
|
|
167
|
+
const heuristicIndex = similarities.findIndex(s => s.type === heuristicType);
|
|
168
|
+
if (heuristicIndex > 0) {
|
|
169
|
+
similarities[heuristicIndex].similarity *= 1.2; // 20% boost
|
|
170
|
+
similarities.sort((a, b) => b.similarity - a.similarity);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Create result
|
|
174
|
+
const result = {
|
|
175
|
+
type: similarities[0].type,
|
|
176
|
+
confidence: similarities[0].similarity,
|
|
177
|
+
reasoning: this.generateReasoning(obj, similarities[0].type, 'noun'),
|
|
178
|
+
alternatives: similarities.slice(1, 4).map(s => ({
|
|
179
|
+
type: s.type,
|
|
180
|
+
confidence: s.similarity
|
|
181
|
+
}))
|
|
182
|
+
};
|
|
183
|
+
// Cache result
|
|
184
|
+
this.cache.set(cacheKey, result);
|
|
185
|
+
return result;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Match a relationship to the most appropriate verb type
|
|
189
|
+
*/
|
|
190
|
+
async matchVerbType(sourceObj, targetObj, relationshipHint) {
|
|
191
|
+
await this.init();
|
|
192
|
+
// Create text representation of the relationship
|
|
193
|
+
const textRepresentation = this.createRelationshipText(sourceObj, targetObj, relationshipHint);
|
|
194
|
+
// Check cache
|
|
195
|
+
const cacheKey = `verb:${textRepresentation}`;
|
|
196
|
+
if (this.cache.has(cacheKey)) {
|
|
197
|
+
return this.cache.get(cacheKey);
|
|
198
|
+
}
|
|
199
|
+
// Generate embedding
|
|
200
|
+
const inputEmbedding = await this.embedder.embed(textRepresentation);
|
|
201
|
+
// Calculate similarities to all verb types
|
|
202
|
+
const similarities = [];
|
|
203
|
+
for (const [type, typeEmbedding] of this.verbEmbeddings.entries()) {
|
|
204
|
+
const similarity = 1 - cosineDistance(inputEmbedding, typeEmbedding);
|
|
205
|
+
similarities.push({ type, similarity });
|
|
206
|
+
}
|
|
207
|
+
// Sort by similarity
|
|
208
|
+
similarities.sort((a, b) => b.similarity - a.similarity);
|
|
209
|
+
// Apply heuristic rules
|
|
210
|
+
const heuristicType = this.applyVerbHeuristics(sourceObj, targetObj, relationshipHint);
|
|
211
|
+
if (heuristicType) {
|
|
212
|
+
const heuristicIndex = similarities.findIndex(s => s.type === heuristicType);
|
|
213
|
+
if (heuristicIndex > 0) {
|
|
214
|
+
similarities[heuristicIndex].similarity *= 1.2;
|
|
215
|
+
similarities.sort((a, b) => b.similarity - a.similarity);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
// Create result
|
|
219
|
+
const result = {
|
|
220
|
+
type: similarities[0].type,
|
|
221
|
+
confidence: similarities[0].similarity,
|
|
222
|
+
reasoning: this.generateReasoning({ source: sourceObj, target: targetObj, hint: relationshipHint }, similarities[0].type, 'verb'),
|
|
223
|
+
alternatives: similarities.slice(1, 4).map(s => ({
|
|
224
|
+
type: s.type,
|
|
225
|
+
confidence: s.similarity
|
|
226
|
+
}))
|
|
227
|
+
};
|
|
228
|
+
// Cache result
|
|
229
|
+
this.cache.set(cacheKey, result);
|
|
230
|
+
return result;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Create text representation of an object for embedding
|
|
234
|
+
*/
|
|
235
|
+
createTextRepresentation(obj) {
|
|
236
|
+
const parts = [];
|
|
237
|
+
// Add type if available
|
|
238
|
+
if (typeof obj === 'object' && obj !== null) {
|
|
239
|
+
// Add field names and values
|
|
240
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
241
|
+
parts.push(key);
|
|
242
|
+
if (typeof value === 'string') {
|
|
243
|
+
parts.push(value.slice(0, 100)); // Limit string length
|
|
244
|
+
}
|
|
245
|
+
else if (typeof value === 'number' || typeof value === 'boolean') {
|
|
246
|
+
parts.push(String(value));
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// Add special fields with higher weight
|
|
250
|
+
const importantFields = ['type', 'kind', 'category', 'class', 'name', 'title', 'description'];
|
|
251
|
+
for (const field of importantFields) {
|
|
252
|
+
if (obj[field]) {
|
|
253
|
+
parts.push(String(obj[field]));
|
|
254
|
+
parts.push(String(obj[field])); // Double weight for important fields
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else if (typeof obj === 'string') {
|
|
259
|
+
parts.push(obj);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
parts.push(String(obj));
|
|
263
|
+
}
|
|
264
|
+
return parts.join(' ');
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Create text representation of a relationship
|
|
268
|
+
*/
|
|
269
|
+
createRelationshipText(sourceObj, targetObj, relationshipHint) {
|
|
270
|
+
const parts = [];
|
|
271
|
+
if (relationshipHint) {
|
|
272
|
+
parts.push(relationshipHint);
|
|
273
|
+
parts.push(relationshipHint); // Double weight for explicit hint
|
|
274
|
+
}
|
|
275
|
+
// Add source context
|
|
276
|
+
if (sourceObj) {
|
|
277
|
+
parts.push('source:');
|
|
278
|
+
parts.push(this.getObjectSummary(sourceObj));
|
|
279
|
+
}
|
|
280
|
+
// Add target context
|
|
281
|
+
if (targetObj) {
|
|
282
|
+
parts.push('target:');
|
|
283
|
+
parts.push(this.getObjectSummary(targetObj));
|
|
284
|
+
}
|
|
285
|
+
return parts.join(' ');
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Get a brief summary of an object
|
|
289
|
+
*/
|
|
290
|
+
getObjectSummary(obj) {
|
|
291
|
+
if (typeof obj === 'string')
|
|
292
|
+
return obj.slice(0, 50);
|
|
293
|
+
if (typeof obj !== 'object' || obj === null)
|
|
294
|
+
return String(obj);
|
|
295
|
+
const summary = [];
|
|
296
|
+
const fields = ['type', 'name', 'title', 'id', 'category', 'kind'];
|
|
297
|
+
for (const field of fields) {
|
|
298
|
+
if (obj[field]) {
|
|
299
|
+
summary.push(String(obj[field]));
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
return summary.join(' ').slice(0, 100);
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Apply heuristic rules for noun type detection
|
|
306
|
+
*/
|
|
307
|
+
applyNounHeuristics(obj) {
|
|
308
|
+
if (typeof obj !== 'object' || obj === null)
|
|
309
|
+
return null;
|
|
310
|
+
// Person heuristics
|
|
311
|
+
if (obj.email || obj.firstName || obj.lastName || obj.username || obj.age || obj.gender) {
|
|
312
|
+
return NounType.Person;
|
|
313
|
+
}
|
|
314
|
+
// Organization heuristics
|
|
315
|
+
if (obj.companyName || obj.organizationId || obj.employees || obj.industry) {
|
|
316
|
+
return NounType.Organization;
|
|
317
|
+
}
|
|
318
|
+
// Location heuristics
|
|
319
|
+
if (obj.latitude || obj.longitude || obj.address || obj.city || obj.country || obj.coordinates) {
|
|
320
|
+
return NounType.Location;
|
|
321
|
+
}
|
|
322
|
+
// Document heuristics
|
|
323
|
+
if (obj.content && (obj.title || obj.author) || obj.documentType || obj.pages) {
|
|
324
|
+
return NounType.Document;
|
|
325
|
+
}
|
|
326
|
+
// Event heuristics
|
|
327
|
+
if (obj.startTime || obj.endTime || obj.date || obj.eventType || obj.attendees) {
|
|
328
|
+
return NounType.Event;
|
|
329
|
+
}
|
|
330
|
+
// Product heuristics
|
|
331
|
+
if (obj.price || obj.sku || obj.inventory || obj.productId) {
|
|
332
|
+
return NounType.Product;
|
|
333
|
+
}
|
|
334
|
+
// Task heuristics
|
|
335
|
+
if (obj.status && (obj.assignee || obj.dueDate) || obj.priority || obj.completed !== undefined) {
|
|
336
|
+
return NounType.Task;
|
|
337
|
+
}
|
|
338
|
+
// Media heuristics
|
|
339
|
+
if (obj.url && (obj.url.match(/\.(jpg|jpeg|png|gif|mp4|mp3|wav)/i))) {
|
|
340
|
+
return NounType.Media;
|
|
341
|
+
}
|
|
342
|
+
// Dataset heuristics
|
|
343
|
+
if (Array.isArray(obj.data) || obj.rows || obj.columns || obj.schema) {
|
|
344
|
+
return NounType.Dataset;
|
|
345
|
+
}
|
|
346
|
+
return null;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Apply heuristic rules for verb type detection
|
|
350
|
+
*/
|
|
351
|
+
applyVerbHeuristics(sourceObj, targetObj, relationshipHint) {
|
|
352
|
+
if (!relationshipHint)
|
|
353
|
+
return null;
|
|
354
|
+
const hint = relationshipHint.toLowerCase();
|
|
355
|
+
// Ownership patterns
|
|
356
|
+
if (hint.includes('own') || hint.includes('possess') || hint.includes('has')) {
|
|
357
|
+
return VerbType.Owns;
|
|
358
|
+
}
|
|
359
|
+
// Creation patterns
|
|
360
|
+
if (hint.includes('create') || hint.includes('made') || hint.includes('authored')) {
|
|
361
|
+
return VerbType.Creates;
|
|
362
|
+
}
|
|
363
|
+
// Containment patterns
|
|
364
|
+
if (hint.includes('contain') || hint.includes('include') || hint.includes('has')) {
|
|
365
|
+
return VerbType.Contains;
|
|
366
|
+
}
|
|
367
|
+
// Membership patterns
|
|
368
|
+
if (hint.includes('member') || hint.includes('belong') || hint.includes('part')) {
|
|
369
|
+
return VerbType.MemberOf;
|
|
370
|
+
}
|
|
371
|
+
// Reference patterns
|
|
372
|
+
if (hint.includes('refer') || hint.includes('cite') || hint.includes('link')) {
|
|
373
|
+
return VerbType.References;
|
|
374
|
+
}
|
|
375
|
+
// Dependency patterns
|
|
376
|
+
if (hint.includes('depend') || hint.includes('require') || hint.includes('need')) {
|
|
377
|
+
return VerbType.DependsOn;
|
|
378
|
+
}
|
|
379
|
+
return null;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Generate human-readable reasoning for the type selection
|
|
383
|
+
*/
|
|
384
|
+
generateReasoning(obj, selectedType, typeKind) {
|
|
385
|
+
const descriptions = typeKind === 'noun' ? NOUN_TYPE_DESCRIPTIONS : VERB_TYPE_DESCRIPTIONS;
|
|
386
|
+
const typeDesc = descriptions[selectedType];
|
|
387
|
+
if (typeKind === 'noun') {
|
|
388
|
+
const fields = Object.keys(obj).slice(0, 3).join(', ');
|
|
389
|
+
return `Matched to ${selectedType} based on semantic similarity to "${typeDesc.split(' ').slice(0, 5).join(' ')}..." and object fields: ${fields}`;
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
return `Matched to ${selectedType} based on semantic similarity to "${typeDesc.split(' ').slice(0, 5).join(' ')}..." and relationship context`;
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Clear the cache
|
|
397
|
+
*/
|
|
398
|
+
clearCache() {
|
|
399
|
+
this.cache.clear();
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* Dispose of resources
|
|
403
|
+
*/
|
|
404
|
+
async dispose() {
|
|
405
|
+
await this.embedder.dispose();
|
|
406
|
+
this.cache.clear();
|
|
407
|
+
this.nounEmbeddings.clear();
|
|
408
|
+
this.verbEmbeddings.clear();
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Singleton instance for efficient reuse
|
|
413
|
+
*/
|
|
414
|
+
let globalInstance = null;
|
|
415
|
+
/**
|
|
416
|
+
* Get or create the global BrainyTypes instance
|
|
417
|
+
*/
|
|
418
|
+
export async function getBrainyTypes() {
|
|
419
|
+
if (!globalInstance) {
|
|
420
|
+
globalInstance = new BrainyTypes();
|
|
421
|
+
await globalInstance.init();
|
|
422
|
+
}
|
|
423
|
+
return globalInstance;
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=brainyTypes.js.map
|
|
@@ -1,83 +1,63 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* IntelligentTypeMatcher - Wrapper around BrainyTypes for testing
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - Semantic similarity matching using embeddings
|
|
9
|
-
* - Context-aware type detection
|
|
10
|
-
* - Confidence scoring
|
|
11
|
-
* - Caching for performance
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Result of type matching with confidence scores
|
|
4
|
+
* Provides intelligent type detection using semantic embeddings
|
|
5
|
+
* for matching data to our 31 noun types and 40 verb types.
|
|
15
6
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
type: string;
|
|
22
|
-
confidence: number;
|
|
23
|
-
}>;
|
|
7
|
+
import { NounType, VerbType } from '../../types/graphTypes.js';
|
|
8
|
+
export interface TypeMatchOptions {
|
|
9
|
+
threshold?: number;
|
|
10
|
+
topK?: number;
|
|
11
|
+
useCache?: boolean;
|
|
24
12
|
}
|
|
25
13
|
/**
|
|
26
|
-
* Intelligent
|
|
14
|
+
* Intelligent type matcher using semantic embeddings
|
|
27
15
|
*/
|
|
28
16
|
export declare class IntelligentTypeMatcher {
|
|
29
|
-
private
|
|
30
|
-
private
|
|
31
|
-
private verbEmbeddings;
|
|
32
|
-
private initialized;
|
|
17
|
+
private options;
|
|
18
|
+
private brainyTypes;
|
|
33
19
|
private cache;
|
|
34
|
-
constructor();
|
|
20
|
+
constructor(options?: TypeMatchOptions);
|
|
35
21
|
/**
|
|
36
|
-
* Initialize the type matcher
|
|
22
|
+
* Initialize the type matcher
|
|
37
23
|
*/
|
|
38
24
|
init(): Promise<void>;
|
|
39
25
|
/**
|
|
40
|
-
*
|
|
41
|
-
*/
|
|
42
|
-
matchNounType(obj: any): Promise<TypeMatchResult>;
|
|
43
|
-
/**
|
|
44
|
-
* Match a relationship to the most appropriate verb type
|
|
45
|
-
*/
|
|
46
|
-
matchVerbType(sourceObj: any, targetObj: any, relationshipHint?: string): Promise<TypeMatchResult>;
|
|
47
|
-
/**
|
|
48
|
-
* Create text representation of an object for embedding
|
|
49
|
-
*/
|
|
50
|
-
private createTextRepresentation;
|
|
51
|
-
/**
|
|
52
|
-
* Create text representation of a relationship
|
|
53
|
-
*/
|
|
54
|
-
private createRelationshipText;
|
|
55
|
-
/**
|
|
56
|
-
* Get a brief summary of an object
|
|
57
|
-
*/
|
|
58
|
-
private getObjectSummary;
|
|
59
|
-
/**
|
|
60
|
-
* Apply heuristic rules for noun type detection
|
|
26
|
+
* Dispose of resources
|
|
61
27
|
*/
|
|
62
|
-
|
|
28
|
+
dispose(): Promise<void>;
|
|
63
29
|
/**
|
|
64
|
-
*
|
|
30
|
+
* Match data to a noun type
|
|
65
31
|
*/
|
|
66
|
-
|
|
32
|
+
matchNounType(data: any): Promise<{
|
|
33
|
+
type: NounType;
|
|
34
|
+
confidence: number;
|
|
35
|
+
alternatives: Array<{
|
|
36
|
+
type: NounType;
|
|
37
|
+
confidence: number;
|
|
38
|
+
}>;
|
|
39
|
+
}>;
|
|
67
40
|
/**
|
|
68
|
-
*
|
|
41
|
+
* Match a relationship to a verb type
|
|
69
42
|
*/
|
|
70
|
-
|
|
43
|
+
matchVerbType(source: any, target: any, relationship?: string): Promise<{
|
|
44
|
+
type: VerbType;
|
|
45
|
+
confidence: number;
|
|
46
|
+
alternatives: Array<{
|
|
47
|
+
type: VerbType;
|
|
48
|
+
confidence: number;
|
|
49
|
+
}>;
|
|
50
|
+
}>;
|
|
71
51
|
/**
|
|
72
52
|
* Clear the cache
|
|
73
53
|
*/
|
|
74
54
|
clearCache(): void;
|
|
75
55
|
/**
|
|
76
|
-
*
|
|
56
|
+
* Get cache statistics
|
|
77
57
|
*/
|
|
78
|
-
|
|
58
|
+
getCacheStats(): {
|
|
59
|
+
size: number;
|
|
60
|
+
maxSize: number;
|
|
61
|
+
};
|
|
79
62
|
}
|
|
80
|
-
|
|
81
|
-
* Get or create the global type matcher instance
|
|
82
|
-
*/
|
|
83
|
-
export declare function getTypeMatcher(): Promise<IntelligentTypeMatcher>;
|
|
63
|
+
export default IntelligentTypeMatcher;
|