@soulcraft/brainy 6.2.0 → 6.2.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.
@@ -0,0 +1,52 @@
1
+ /**
2
+ * BrainyInterface - Modern API Only
3
+ *
4
+ * This interface defines the MODERN methods from Brainy 3.0.
5
+ * Used to break circular dependencies while enforcing modern API usage.
6
+ *
7
+ * NO DEPRECATED METHODS - Only clean, modern API patterns.
8
+ */
9
+ import { Vector } from '../coreTypes.js';
10
+ import { AddParams, RelateParams, Result, Entity, FindParams, SimilarParams } from './brainy.types.js';
11
+ export interface BrainyInterface<T = unknown> {
12
+ /**
13
+ * Initialize the database
14
+ */
15
+ init(): Promise<void>;
16
+ /**
17
+ * Modern add method - unified entity creation
18
+ * @param params Parameters for adding entities
19
+ * @returns The ID of the created entity
20
+ */
21
+ add(params: AddParams<T>): Promise<string>;
22
+ /**
23
+ * Modern relate method - unified relationship creation
24
+ * @param params Parameters for creating relationships
25
+ * @returns The ID of the created relationship
26
+ */
27
+ relate(params: RelateParams<T>): Promise<string>;
28
+ /**
29
+ * Modern find method - unified search and discovery
30
+ * @param query Search query or parameters object
31
+ * @returns Array of search results
32
+ */
33
+ find(query: string | FindParams<T>): Promise<Result<T>[]>;
34
+ /**
35
+ * Modern get method - retrieve entities by ID
36
+ * @param id The entity ID to retrieve
37
+ * @returns Entity or null if not found
38
+ */
39
+ get(id: string): Promise<Entity<T> | null>;
40
+ /**
41
+ * Modern similar method - find similar entities
42
+ * @param params Parameters for similarity search
43
+ * @returns Array of similar entities with scores
44
+ */
45
+ similar(params: SimilarParams<T>): Promise<Result<T>[]>;
46
+ /**
47
+ * Generate embedding vector from text
48
+ * @param text The text to embed
49
+ * @returns Vector representation of the text
50
+ */
51
+ embed(text: string): Promise<Vector>;
52
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * BrainyInterface - Modern API Only
3
+ *
4
+ * This interface defines the MODERN methods from Brainy 3.0.
5
+ * Used to break circular dependencies while enforcing modern API usage.
6
+ *
7
+ * NO DEPRECATED METHODS - Only clean, modern API patterns.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=brainyDataInterface.js.map
@@ -436,6 +436,23 @@ export declare class MetadataIndexManager {
436
436
  * Get all entity types and their counts - O(1) operation
437
437
  */
438
438
  getAllEntityCounts(): Map<string, number>;
439
+ /**
440
+ * Get VFS entity count for a specific type using Roaring bitmap intersection
441
+ * Uses hardware-accelerated SIMD operations (AVX2/SSE4.2)
442
+ * @param type The noun type to query
443
+ * @returns Count of VFS entities of this type
444
+ */
445
+ getVFSEntityCountByType(type: string): Promise<number>;
446
+ /**
447
+ * Get all VFS entity counts by type using Roaring bitmap operations
448
+ * @returns Map of type -> VFS entity count
449
+ */
450
+ getAllVFSEntityCounts(): Promise<Map<string, number>>;
451
+ /**
452
+ * Get total count of VFS entities - O(1) using Roaring bitmap cardinality
453
+ * @returns Total VFS entity count
454
+ */
455
+ getTotalVFSEntityCount(): Promise<number>;
439
456
  /**
440
457
  * Get entity count for a noun type using type enum (O(1) array access)
441
458
  * More efficient than Map-based getEntityCountByType
@@ -1230,6 +1230,21 @@ export class MetadataIndexManager {
1230
1230
  const subIds = await this.getIdsForFilter(subFilter);
1231
1231
  subIds.forEach(id => unionIds.add(id));
1232
1232
  }
1233
+ // v6.2.1: Fix - Check for outer-level field conditions that need AND application
1234
+ // This handles cases like { anyOf: [...], vfsType: { exists: false } }
1235
+ // where the anyOf results must be intersected with other field conditions
1236
+ const outerFields = Object.keys(filter).filter((k) => k !== 'anyOf' && k !== 'allOf' && k !== 'not');
1237
+ if (outerFields.length > 0) {
1238
+ // Build filter with just outer fields and get matching IDs
1239
+ const outerFilter = {};
1240
+ for (const field of outerFields) {
1241
+ outerFilter[field] = filter[field];
1242
+ }
1243
+ const outerIds = await this.getIdsForFilter(outerFilter);
1244
+ const outerIdSet = new Set(outerIds);
1245
+ // Intersect: anyOf union AND outer field conditions
1246
+ return Array.from(unionIds).filter((id) => outerIdSet.has(id));
1247
+ }
1233
1248
  return Array.from(unionIds);
1234
1249
  }
1235
1250
  // Process field filters with range support
@@ -1865,6 +1880,54 @@ export class MetadataIndexManager {
1865
1880
  return new Map(this.totalEntitiesByType);
1866
1881
  }
1867
1882
  // ============================================================================
1883
+ // v6.2.1: VFS Statistics Methods (uses existing Roaring bitmap infrastructure)
1884
+ // ============================================================================
1885
+ /**
1886
+ * Get VFS entity count for a specific type using Roaring bitmap intersection
1887
+ * Uses hardware-accelerated SIMD operations (AVX2/SSE4.2)
1888
+ * @param type The noun type to query
1889
+ * @returns Count of VFS entities of this type
1890
+ */
1891
+ async getVFSEntityCountByType(type) {
1892
+ const vfsBitmap = await this.getBitmapFromChunks('isVFSEntity', true);
1893
+ const typeBitmap = await this.getBitmapFromChunks('noun', type);
1894
+ if (!vfsBitmap || !typeBitmap)
1895
+ return 0;
1896
+ // Hardware-accelerated intersection + O(1) cardinality
1897
+ const intersection = RoaringBitmap32.and(vfsBitmap, typeBitmap);
1898
+ return intersection.size;
1899
+ }
1900
+ /**
1901
+ * Get all VFS entity counts by type using Roaring bitmap operations
1902
+ * @returns Map of type -> VFS entity count
1903
+ */
1904
+ async getAllVFSEntityCounts() {
1905
+ const vfsBitmap = await this.getBitmapFromChunks('isVFSEntity', true);
1906
+ if (!vfsBitmap || vfsBitmap.size === 0) {
1907
+ return new Map();
1908
+ }
1909
+ const result = new Map();
1910
+ // Iterate through all known types and compute VFS count via intersection
1911
+ for (const type of this.totalEntitiesByType.keys()) {
1912
+ const typeBitmap = await this.getBitmapFromChunks('noun', type);
1913
+ if (typeBitmap) {
1914
+ const intersection = RoaringBitmap32.and(vfsBitmap, typeBitmap);
1915
+ if (intersection.size > 0) {
1916
+ result.set(type, intersection.size);
1917
+ }
1918
+ }
1919
+ }
1920
+ return result;
1921
+ }
1922
+ /**
1923
+ * Get total count of VFS entities - O(1) using Roaring bitmap cardinality
1924
+ * @returns Total VFS entity count
1925
+ */
1926
+ async getTotalVFSEntityCount() {
1927
+ const vfsBitmap = await this.getBitmapFromChunks('isVFSEntity', true);
1928
+ return vfsBitmap?.size ?? 0;
1929
+ }
1930
+ // ============================================================================
1868
1931
  // Phase 1b: Type Enum Methods (O(1) access via Uint32Arrays)
1869
1932
  // ============================================================================
1870
1933
  /**
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Universal Concept System for VFS
3
+ *
4
+ * Manages concepts that transcend files and exist independently
5
+ * Ideas that can be linked to multiple manifestations across domains
6
+ * PRODUCTION-READY: Real implementation using Brainy
7
+ */
8
+ import { Brainy } from '../brainy.js';
9
+ import { EntityManager, ManagedEntity } from './EntityManager.js';
10
+ /**
11
+ * Universal concept that exists independently of files
12
+ */
13
+ export interface UniversalConcept extends ManagedEntity {
14
+ id: string;
15
+ name: string;
16
+ description?: string;
17
+ domain: string;
18
+ category: string;
19
+ keywords: string[];
20
+ links: ConceptLink[];
21
+ manifestations: ConceptManifestation[];
22
+ strength: number;
23
+ created: number;
24
+ lastUpdated: number;
25
+ version: number;
26
+ metadata: Record<string, any>;
27
+ conceptType?: string;
28
+ }
29
+ /**
30
+ * A link between concepts
31
+ */
32
+ export interface ConceptLink {
33
+ id: string;
34
+ targetConceptId: string;
35
+ relationship: 'extends' | 'implements' | 'uses' | 'opposite' | 'related' | 'contains' | 'part-of';
36
+ strength: number;
37
+ context?: string;
38
+ bidirectional: boolean;
39
+ }
40
+ /**
41
+ * A manifestation of a concept in a specific location
42
+ */
43
+ export interface ConceptManifestation extends ManagedEntity {
44
+ id: string;
45
+ conceptId: string;
46
+ filePath: string;
47
+ context: string;
48
+ form: 'definition' | 'usage' | 'example' | 'discussion' | 'implementation';
49
+ position?: {
50
+ line?: number;
51
+ column?: number;
52
+ offset?: number;
53
+ };
54
+ confidence: number;
55
+ timestamp: number;
56
+ extractedBy: 'manual' | 'auto' | 'ai';
57
+ }
58
+ /**
59
+ * Configuration for concept system
60
+ */
61
+ export interface ConceptSystemConfig {
62
+ autoLink?: boolean;
63
+ similarityThreshold?: number;
64
+ maxManifestations?: number;
65
+ strengthDecay?: number;
66
+ }
67
+ /**
68
+ * Concept graph structure for visualization
69
+ */
70
+ export interface ConceptGraph {
71
+ concepts: Array<{
72
+ id: string;
73
+ name: string;
74
+ domain: string;
75
+ strength: number;
76
+ manifestationCount: number;
77
+ }>;
78
+ links: Array<{
79
+ source: string;
80
+ target: string;
81
+ relationship: string;
82
+ strength: number;
83
+ }>;
84
+ }
85
+ /**
86
+ * Universal Concept System
87
+ *
88
+ * Manages concepts that exist independently of any specific file or context
89
+ * Examples:
90
+ * - "Authentication" concept appearing in docs, code, tests
91
+ * - "Customer Journey" concept in marketing, UX, analytics
92
+ * - "Dependency Injection" pattern across multiple codebases
93
+ * - "Sustainability" theme in various research papers
94
+ */
95
+ export declare class ConceptSystem extends EntityManager {
96
+ private config;
97
+ private conceptCache;
98
+ constructor(brain: Brainy, config?: ConceptSystemConfig);
99
+ /**
100
+ * Create a new universal concept
101
+ */
102
+ createConcept(concept: Omit<UniversalConcept, 'id' | 'created' | 'lastUpdated' | 'version' | 'links' | 'manifestations'>): Promise<string>;
103
+ /**
104
+ * Find concepts by various criteria
105
+ */
106
+ findConcepts(query: {
107
+ name?: string;
108
+ domain?: string;
109
+ category?: string;
110
+ keywords?: string[];
111
+ similar?: string;
112
+ manifestedIn?: string;
113
+ }): Promise<UniversalConcept[]>;
114
+ /**
115
+ * Link two concepts together
116
+ */
117
+ linkConcept(fromConceptId: string, toConceptId: string, relationship: ConceptLink['relationship'], options?: {
118
+ strength?: number;
119
+ context?: string;
120
+ bidirectional?: boolean;
121
+ }): Promise<string>;
122
+ /**
123
+ * Record a manifestation of a concept in a file
124
+ */
125
+ recordManifestation(conceptId: string, filePath: string, context: string, form: ConceptManifestation['form'], options?: {
126
+ position?: ConceptManifestation['position'];
127
+ confidence?: number;
128
+ extractedBy?: ConceptManifestation['extractedBy'];
129
+ }): Promise<string>;
130
+ /**
131
+ * Extract and link concepts from content
132
+ */
133
+ extractAndLinkConcepts(filePath: string, content: Buffer): Promise<string[]>;
134
+ /**
135
+ * Get concept graph for visualization
136
+ */
137
+ getConceptGraph(options?: {
138
+ domain?: string;
139
+ minStrength?: number;
140
+ maxConcepts?: number;
141
+ }): Promise<ConceptGraph>;
142
+ /**
143
+ * Find appearances of a concept
144
+ */
145
+ findAppearances(conceptId: string, options?: {
146
+ filePath?: string;
147
+ form?: ConceptManifestation['form'];
148
+ minConfidence?: number;
149
+ limit?: number;
150
+ }): Promise<ConceptManifestation[]>;
151
+ /**
152
+ * Auto-link concept to similar concepts
153
+ */
154
+ private autoLinkConcept;
155
+ /**
156
+ * Get concept by ID
157
+ */
158
+ private getConcept;
159
+ /**
160
+ * Update stored concept
161
+ */
162
+ private updateConcept;
163
+ /**
164
+ * Calculate similarity between two concepts
165
+ */
166
+ private calculateConceptSimilarity;
167
+ /**
168
+ * Generate embedding for concept
169
+ */
170
+ private generateConceptEmbedding;
171
+ /**
172
+ * Generate embedding for text
173
+ */
174
+ private generateTextEmbedding;
175
+ /**
176
+ * Get reverse relationship type
177
+ */
178
+ private getReverseRelationship;
179
+ /**
180
+ * Map concept relationship to VerbType
181
+ */
182
+ private getVerbType;
183
+ /**
184
+ * Detect concept domain from context
185
+ */
186
+ private detectDomain;
187
+ /**
188
+ * Detect concept category
189
+ */
190
+ private detectCategory;
191
+ /**
192
+ * Detect manifestation form from context
193
+ */
194
+ private detectManifestationForm;
195
+ /**
196
+ * Extract context around a position
197
+ */
198
+ private extractContext;
199
+ /**
200
+ * Clear concept cache
201
+ */
202
+ clearCache(conceptId?: string): void;
203
+ }