@soulcraft/brainy 0.38.0 → 0.40.0

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,63 @@
1
+ /**
2
+ * Intelligent cache auto-configuration system
3
+ * Adapts cache settings based on environment, usage patterns, and storage type
4
+ */
5
+ import { SearchCacheConfig } from './searchCache.js';
6
+ import { BrainyDataConfig } from '../brainyData.js';
7
+ export interface CacheUsageStats {
8
+ totalQueries: number;
9
+ repeatQueries: number;
10
+ avgQueryTime: number;
11
+ memoryPressure: number;
12
+ storageType: 'memory' | 'opfs' | 's3' | 'filesystem';
13
+ isDistributed: boolean;
14
+ changeFrequency: number;
15
+ readWriteRatio: number;
16
+ }
17
+ export interface AutoConfigResult {
18
+ cacheConfig: SearchCacheConfig;
19
+ realtimeConfig: NonNullable<BrainyDataConfig['realtimeUpdates']>;
20
+ reasoning: string[];
21
+ }
22
+ export declare class CacheAutoConfigurator {
23
+ private stats;
24
+ private configHistory;
25
+ private lastOptimization;
26
+ /**
27
+ * Auto-detect optimal cache configuration based on current conditions
28
+ */
29
+ autoDetectOptimalConfig(storageConfig?: BrainyDataConfig['storage'], currentStats?: Partial<CacheUsageStats>): AutoConfigResult;
30
+ /**
31
+ * Dynamically adjust configuration based on runtime performance
32
+ */
33
+ adaptConfiguration(currentConfig: SearchCacheConfig, performanceMetrics: {
34
+ hitRate: number;
35
+ avgResponseTime: number;
36
+ memoryUsage: number;
37
+ externalChangesDetected: number;
38
+ timeSinceLastChange: number;
39
+ }): AutoConfigResult | null;
40
+ /**
41
+ * Get recommended configuration for specific use case
42
+ */
43
+ getRecommendedConfig(useCase: 'high-consistency' | 'balanced' | 'performance-first'): AutoConfigResult;
44
+ /**
45
+ * Learn from usage patterns and improve recommendations
46
+ */
47
+ learnFromUsage(usageData: {
48
+ queryPatterns: string[];
49
+ responseTime: number;
50
+ cacheHits: number;
51
+ totalQueries: number;
52
+ dataChanges: number;
53
+ timeWindow: number;
54
+ }): void;
55
+ private detectEnvironment;
56
+ private generateOptimalConfig;
57
+ private calculateRealtimeConfig;
58
+ private detectMemoryConstraints;
59
+ /**
60
+ * Get human-readable explanation of current configuration
61
+ */
62
+ getConfigExplanation(config: AutoConfigResult): string;
63
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cacheAutoConfig.d.ts","sourceRoot":"","sources":["../../src/utils/cacheAutoConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AAEnD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,GAAG,YAAY,CAAA;IACpD,aAAa,EAAE,OAAO,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,iBAAiB,CAAA;IAC9B,cAAc,EAAE,WAAW,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAA;IAChE,SAAS,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,KAAK,CASZ;IAED,OAAO,CAAC,aAAa,CAAyB;IAC9C,OAAO,CAAC,gBAAgB,CAAI;IAE5B;;OAEG;IACI,uBAAuB,CAC5B,aAAa,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,EAC3C,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GACtC,gBAAgB;IAmBnB;;OAEG;IACI,kBAAkB,CACvB,aAAa,EAAE,iBAAiB,EAChC,kBAAkB,EAAE;QAClB,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,MAAM,CAAA;QACvB,WAAW,EAAE,MAAM,CAAA;QACnB,uBAAuB,EAAE,MAAM,CAAA;QAC/B,mBAAmB,EAAE,MAAM,CAAA;KAC5B,GACA,gBAAgB,GAAG,IAAI;IAgE1B;;OAEG;IACI,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,UAAU,GAAG,mBAAmB,GAAG,gBAAgB;IAkC7G;;OAEG;IACI,cAAc,CAAC,SAAS,EAAE;QAC/B,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,YAAY,EAAE,MAAM,CAAA;QACpB,SAAS,EAAE,MAAM,CAAA;QACjB,YAAY,EAAE,MAAM,CAAA;QACpB,WAAW,EAAE,MAAM,CAAA;QACnB,UAAU,EAAE,MAAM,CAAA;KACnB,GAAG,IAAI;IAaR,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,qBAAqB;IAkE7B,OAAO,CAAC,uBAAuB;IAS/B,OAAO,CAAC,uBAAuB;IAe/B;;OAEG;IACI,oBAAoB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;CAgB9D"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * SearchCache - Caches search results for improved performance
3
+ */
4
+ import { SearchResult } from '../coreTypes.js';
5
+ export interface CacheEntry<T = any> {
6
+ results: SearchResult<T>[];
7
+ timestamp: number;
8
+ hits: number;
9
+ }
10
+ export interface SearchCacheConfig {
11
+ maxAge?: number;
12
+ maxSize?: number;
13
+ enabled?: boolean;
14
+ hitCountWeight?: number;
15
+ }
16
+ export declare class SearchCache<T = any> {
17
+ private cache;
18
+ private maxAge;
19
+ private maxSize;
20
+ private enabled;
21
+ private hitCountWeight;
22
+ private hits;
23
+ private misses;
24
+ private evictions;
25
+ constructor(config?: SearchCacheConfig);
26
+ /**
27
+ * Generate cache key from search parameters
28
+ */
29
+ getCacheKey(query: any, k: number, options?: Record<string, any>): string;
30
+ /**
31
+ * Get cached results if available and not expired
32
+ */
33
+ get(key: string): SearchResult<T>[] | null;
34
+ /**
35
+ * Cache search results
36
+ */
37
+ set(key: string, results: SearchResult<T>[]): void;
38
+ /**
39
+ * Evict the oldest entry based on timestamp and hit count
40
+ */
41
+ private evictOldest;
42
+ /**
43
+ * Clear all cached results
44
+ */
45
+ clear(): void;
46
+ /**
47
+ * Invalidate cache entries that might be affected by data changes
48
+ */
49
+ invalidate(pattern?: string | RegExp): void;
50
+ /**
51
+ * Smart invalidation for real-time data updates
52
+ * Only clears cache if it's getting stale or if data changes significantly
53
+ */
54
+ invalidateOnDataChange(changeType?: 'add' | 'update' | 'delete'): void;
55
+ /**
56
+ * Check if cache entries have expired and remove them
57
+ * This is especially important in distributed scenarios where
58
+ * real-time updates might be delayed or missed
59
+ */
60
+ cleanupExpiredEntries(): number;
61
+ /**
62
+ * Get cache statistics
63
+ */
64
+ getStats(): {
65
+ hits: number;
66
+ misses: number;
67
+ evictions: number;
68
+ hitRate: number;
69
+ size: number;
70
+ maxSize: number;
71
+ enabled: boolean;
72
+ };
73
+ /**
74
+ * Enable or disable caching
75
+ */
76
+ setEnabled(enabled: boolean): void;
77
+ /**
78
+ * Get memory usage estimate in bytes
79
+ */
80
+ getMemoryUsage(): number;
81
+ /**
82
+ * Get current cache configuration
83
+ */
84
+ getConfig(): SearchCacheConfig;
85
+ /**
86
+ * Update cache configuration dynamically
87
+ */
88
+ updateConfig(newConfig: Partial<SearchCacheConfig>): void;
89
+ /**
90
+ * Evict entries if cache exceeds maxSize
91
+ */
92
+ private evictIfNeeded;
93
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchCache.d.ts","sourceRoot":"","sources":["../../src/utils/searchCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,WAAW,UAAU,CAAC,CAAC,GAAG,GAAG;IACjC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,qBAAa,WAAW,CAAC,CAAC,GAAG,GAAG;IAC9B,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,cAAc,CAAQ;IAG9B,OAAO,CAAC,IAAI,CAAI;IAChB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,SAAS,CAAI;gBAET,MAAM,GAAE,iBAAsB;IAO1C;;OAEG;IACH,WAAW,CACT,KAAK,EAAE,GAAG,EACV,CAAC,EAAE,MAAM,EACT,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAChC,MAAM;IAkBT;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAsB1C;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI;IAelD;;OAEG;IACH,OAAO,CAAC,WAAW;IAwBnB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,UAAU,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAqB3C;;;OAGG;IACH,sBAAsB,CAAC,UAAU,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAOtE;;;;OAIG;IACH,qBAAqB,IAAI,MAAM;IAc/B;;OAEG;IACH,QAAQ;;;;;;;;;IAaR;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAOlC;;OAEG;IACH,cAAc,IAAI,MAAM;IAexB;;OAEG;IACH,SAAS,IAAI,iBAAiB;IAS9B;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAmBzD;;OAEG;IACH,OAAO,CAAC,aAAa;CA6BtB"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Lightweight statistics collector for Brainy
3
+ * Designed to have minimal performance impact even with millions of entries
4
+ */
5
+ import { StatisticsData } from '../coreTypes.js';
6
+ export declare class StatisticsCollector {
7
+ private contentTypes;
8
+ private oldestTimestamp;
9
+ private newestTimestamp;
10
+ private updateTimestamps;
11
+ private searchMetrics;
12
+ private verbTypes;
13
+ private storageSizeCache;
14
+ private readonly MAX_TIMESTAMPS;
15
+ private readonly MAX_SEARCH_TERMS;
16
+ private readonly SIZE_UPDATE_INTERVAL;
17
+ /**
18
+ * Track content type (very lightweight)
19
+ */
20
+ trackContentType(type: string): void;
21
+ /**
22
+ * Track data update timestamp (lightweight)
23
+ */
24
+ trackUpdate(timestamp?: number): void;
25
+ /**
26
+ * Track search performance (lightweight)
27
+ */
28
+ trackSearch(searchTerm: string, durationMs: number): void;
29
+ /**
30
+ * Track verb type (lightweight)
31
+ */
32
+ trackVerbType(type: string): void;
33
+ /**
34
+ * Update storage size estimates (called periodically, not on every operation)
35
+ */
36
+ updateStorageSizes(sizes: {
37
+ nouns: number;
38
+ verbs: number;
39
+ metadata: number;
40
+ index: number;
41
+ }): void;
42
+ /**
43
+ * Get comprehensive statistics
44
+ */
45
+ getStatistics(): Partial<StatisticsData>;
46
+ /**
47
+ * Merge statistics from storage (for distributed systems)
48
+ */
49
+ mergeFromStorage(stored: Partial<StatisticsData>): void;
50
+ /**
51
+ * Reset statistics (for testing)
52
+ */
53
+ reset(): void;
54
+ private pruneSearchTerms;
55
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statisticsCollector.d.ts","sourceRoot":"","sources":["../../src/utils/statisticsCollector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAOhD,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,YAAY,CAAiC;IAGrD,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,eAAe,CAAqB;IAC5C,OAAO,CAAC,gBAAgB,CAAuB;IAG/C,OAAO,CAAC,aAAa,CAKpB;IAGD,OAAO,CAAC,SAAS,CAAiC;IAGlD,OAAO,CAAC,gBAAgB,CAQvB;IAED,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAO;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IACvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAQ;IAE7C;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;OAEG;IACH,WAAW,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrC;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAyBzD;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIjC;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE;QACxB,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,MAAM,CAAA;QACb,QAAQ,EAAE,MAAM,CAAA;QAChB,KAAK,EAAE,MAAM,CAAA;KACd,GAAG,IAAI;IAOR;;OAEG;IACH,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC;IAmFxC;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,IAAI;IA4BvD;;OAEG;IACH,KAAK,IAAI,IAAI;IAcb,OAAO,CAAC,gBAAgB;CAWzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@soulcraft/brainy",
3
- "version": "0.38.0",
3
+ "version": "0.40.0",
4
4
  "description": "A vector graph database using HNSW indexing with Origin Private File System storage",
5
5
  "main": "dist/unified.js",
6
6
  "module": "dist/unified.js",