@nxuss/lemma 0.1.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.
Files changed (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +311 -0
  3. package/dist/cloud/KeyManager.d.ts +29 -0
  4. package/dist/cloud/KeyManager.d.ts.map +1 -0
  5. package/dist/cloud/KeyManager.js +142 -0
  6. package/dist/cloud/KeyManager.js.map +1 -0
  7. package/dist/cloud/TenantCache.d.ts +29 -0
  8. package/dist/cloud/TenantCache.d.ts.map +1 -0
  9. package/dist/cloud/TenantCache.js +162 -0
  10. package/dist/cloud/TenantCache.js.map +1 -0
  11. package/dist/cloud/index.d.ts +4 -0
  12. package/dist/cloud/index.d.ts.map +1 -0
  13. package/dist/cloud/index.js +23 -0
  14. package/dist/cloud/index.js.map +1 -0
  15. package/dist/cloud/server.d.ts +17 -0
  16. package/dist/cloud/server.d.ts.map +1 -0
  17. package/dist/cloud/server.js +189 -0
  18. package/dist/cloud/server.js.map +1 -0
  19. package/dist/cloud/types.d.ts +35 -0
  20. package/dist/cloud/types.d.ts.map +1 -0
  21. package/dist/cloud/types.js +14 -0
  22. package/dist/cloud/types.js.map +1 -0
  23. package/dist/config/index.d.ts +44 -0
  24. package/dist/config/index.d.ts.map +1 -0
  25. package/dist/config/index.js +161 -0
  26. package/dist/config/index.js.map +1 -0
  27. package/dist/consensus/ConsensusEngine.d.ts +119 -0
  28. package/dist/consensus/ConsensusEngine.d.ts.map +1 -0
  29. package/dist/consensus/ConsensusEngine.js +314 -0
  30. package/dist/consensus/ConsensusEngine.js.map +1 -0
  31. package/dist/consensus/ModelPool.d.ts +103 -0
  32. package/dist/consensus/ModelPool.d.ts.map +1 -0
  33. package/dist/consensus/ModelPool.js +276 -0
  34. package/dist/consensus/ModelPool.js.map +1 -0
  35. package/dist/consensus/index.d.ts +8 -0
  36. package/dist/consensus/index.d.ts.map +1 -0
  37. package/dist/consensus/index.js +13 -0
  38. package/dist/consensus/index.js.map +1 -0
  39. package/dist/core/AgentRegistry.d.ts +89 -0
  40. package/dist/core/AgentRegistry.d.ts.map +1 -0
  41. package/dist/core/AgentRegistry.js +264 -0
  42. package/dist/core/AgentRegistry.js.map +1 -0
  43. package/dist/core/DashboardBroadcaster.d.ts +67 -0
  44. package/dist/core/DashboardBroadcaster.d.ts.map +1 -0
  45. package/dist/core/DashboardBroadcaster.js +264 -0
  46. package/dist/core/DashboardBroadcaster.js.map +1 -0
  47. package/dist/core/OrchestrationEngine.d.ts +84 -0
  48. package/dist/core/OrchestrationEngine.d.ts.map +1 -0
  49. package/dist/core/OrchestrationEngine.js +455 -0
  50. package/dist/core/OrchestrationEngine.js.map +1 -0
  51. package/dist/core/SubconsciousEngine.d.ts +53 -0
  52. package/dist/core/SubconsciousEngine.d.ts.map +1 -0
  53. package/dist/core/SubconsciousEngine.js +273 -0
  54. package/dist/core/SubconsciousEngine.js.map +1 -0
  55. package/dist/core/WebSocketServer.d.ts +89 -0
  56. package/dist/core/WebSocketServer.d.ts.map +1 -0
  57. package/dist/core/WebSocketServer.js +416 -0
  58. package/dist/core/WebSocketServer.js.map +1 -0
  59. package/dist/core/index.d.ts +15 -0
  60. package/dist/core/index.d.ts.map +1 -0
  61. package/dist/core/index.js +24 -0
  62. package/dist/core/index.js.map +1 -0
  63. package/dist/core/router.d.ts +105 -0
  64. package/dist/core/router.d.ts.map +1 -0
  65. package/dist/core/router.js +420 -0
  66. package/dist/core/router.js.map +1 -0
  67. package/dist/embed/index.d.ts +153 -0
  68. package/dist/embed/index.d.ts.map +1 -0
  69. package/dist/embed/index.js +408 -0
  70. package/dist/embed/index.js.map +1 -0
  71. package/dist/embed.d.ts +11 -0
  72. package/dist/embed.d.ts.map +1 -0
  73. package/dist/embed.js +19 -0
  74. package/dist/embed.js.map +1 -0
  75. package/dist/index.d.ts +83 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +176 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/protocol/flows.d.ts +126 -0
  80. package/dist/protocol/flows.d.ts.map +1 -0
  81. package/dist/protocol/flows.js +347 -0
  82. package/dist/protocol/flows.js.map +1 -0
  83. package/dist/protocol/iap.d.ts +54 -0
  84. package/dist/protocol/iap.d.ts.map +1 -0
  85. package/dist/protocol/iap.js +108 -0
  86. package/dist/protocol/iap.js.map +1 -0
  87. package/dist/protocol/index.d.ts +23 -0
  88. package/dist/protocol/index.d.ts.map +1 -0
  89. package/dist/protocol/index.js +45 -0
  90. package/dist/protocol/index.js.map +1 -0
  91. package/dist/protocol/types.d.ts +332 -0
  92. package/dist/protocol/types.d.ts.map +1 -0
  93. package/dist/protocol/types.js +57 -0
  94. package/dist/protocol/types.js.map +1 -0
  95. package/dist/protocol/utils.d.ts +130 -0
  96. package/dist/protocol/utils.d.ts.map +1 -0
  97. package/dist/protocol/utils.js +292 -0
  98. package/dist/protocol/utils.js.map +1 -0
  99. package/dist/protocol/validators.d.ts +54 -0
  100. package/dist/protocol/validators.d.ts.map +1 -0
  101. package/dist/protocol/validators.js +344 -0
  102. package/dist/protocol/validators.js.map +1 -0
  103. package/dist/security/AuthManager.d.ts +73 -0
  104. package/dist/security/AuthManager.d.ts.map +1 -0
  105. package/dist/security/AuthManager.js +102 -0
  106. package/dist/security/AuthManager.js.map +1 -0
  107. package/dist/security/MessageSanitizer.d.ts +51 -0
  108. package/dist/security/MessageSanitizer.d.ts.map +1 -0
  109. package/dist/security/MessageSanitizer.js +166 -0
  110. package/dist/security/MessageSanitizer.js.map +1 -0
  111. package/dist/security/RateLimiter.d.ts +46 -0
  112. package/dist/security/RateLimiter.d.ts.map +1 -0
  113. package/dist/security/RateLimiter.js +133 -0
  114. package/dist/security/RateLimiter.js.map +1 -0
  115. package/dist/security/SecurityMiddleware.d.ts +88 -0
  116. package/dist/security/SecurityMiddleware.d.ts.map +1 -0
  117. package/dist/security/SecurityMiddleware.js +146 -0
  118. package/dist/security/SecurityMiddleware.js.map +1 -0
  119. package/dist/security/index.d.ts +35 -0
  120. package/dist/security/index.d.ts.map +1 -0
  121. package/dist/security/index.js +42 -0
  122. package/dist/security/index.js.map +1 -0
  123. package/dist/speculative/PredictionEngine.d.ts +99 -0
  124. package/dist/speculative/PredictionEngine.d.ts.map +1 -0
  125. package/dist/speculative/PredictionEngine.js +291 -0
  126. package/dist/speculative/PredictionEngine.js.map +1 -0
  127. package/dist/speculative/SpeculativeCache.d.ts +117 -0
  128. package/dist/speculative/SpeculativeCache.d.ts.map +1 -0
  129. package/dist/speculative/SpeculativeCache.js +292 -0
  130. package/dist/speculative/SpeculativeCache.js.map +1 -0
  131. package/dist/speculative/SpeculativeEngine.d.ts +114 -0
  132. package/dist/speculative/SpeculativeEngine.d.ts.map +1 -0
  133. package/dist/speculative/SpeculativeEngine.js +244 -0
  134. package/dist/speculative/SpeculativeEngine.js.map +1 -0
  135. package/dist/speculative/WorkerPool.d.ts +109 -0
  136. package/dist/speculative/WorkerPool.d.ts.map +1 -0
  137. package/dist/speculative/WorkerPool.js +327 -0
  138. package/dist/speculative/WorkerPool.js.map +1 -0
  139. package/dist/speculative/index.d.ts +10 -0
  140. package/dist/speculative/index.d.ts.map +1 -0
  141. package/dist/speculative/index.js +17 -0
  142. package/dist/speculative/index.js.map +1 -0
  143. package/dist/subconscious/EmbeddingService.d.ts +73 -0
  144. package/dist/subconscious/EmbeddingService.d.ts.map +1 -0
  145. package/dist/subconscious/EmbeddingService.js +196 -0
  146. package/dist/subconscious/EmbeddingService.js.map +1 -0
  147. package/dist/subconscious/SemanticCache.d.ts +82 -0
  148. package/dist/subconscious/SemanticCache.d.ts.map +1 -0
  149. package/dist/subconscious/SemanticCache.js +164 -0
  150. package/dist/subconscious/SemanticCache.js.map +1 -0
  151. package/dist/subconscious/SubconsciousEngine.d.ts +121 -0
  152. package/dist/subconscious/SubconsciousEngine.d.ts.map +1 -0
  153. package/dist/subconscious/SubconsciousEngine.js +241 -0
  154. package/dist/subconscious/SubconsciousEngine.js.map +1 -0
  155. package/dist/subconscious/VectorStore.d.ts +54 -0
  156. package/dist/subconscious/VectorStore.d.ts.map +1 -0
  157. package/dist/subconscious/VectorStore.js +168 -0
  158. package/dist/subconscious/VectorStore.js.map +1 -0
  159. package/dist/subconscious/cache.d.ts +34 -0
  160. package/dist/subconscious/cache.d.ts.map +1 -0
  161. package/dist/subconscious/cache.js +156 -0
  162. package/dist/subconscious/cache.js.map +1 -0
  163. package/dist/subconscious/embeddings.d.ts +25 -0
  164. package/dist/subconscious/embeddings.d.ts.map +1 -0
  165. package/dist/subconscious/embeddings.js +65 -0
  166. package/dist/subconscious/embeddings.js.map +1 -0
  167. package/dist/subconscious/index.d.ts +12 -0
  168. package/dist/subconscious/index.d.ts.map +1 -0
  169. package/dist/subconscious/index.js +19 -0
  170. package/dist/subconscious/index.js.map +1 -0
  171. package/dist/types/index.d.ts +286 -0
  172. package/dist/types/index.d.ts.map +1 -0
  173. package/dist/types/index.js +43 -0
  174. package/dist/types/index.js.map +1 -0
  175. package/dist/utils/logger.d.ts +63 -0
  176. package/dist/utils/logger.d.ts.map +1 -0
  177. package/dist/utils/logger.js +126 -0
  178. package/dist/utils/logger.js.map +1 -0
  179. package/package.json +99 -0
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.EmbeddingService = void 0;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ /**
9
+ * EmbeddingService handles communication with Ollama API for generating embeddings.
10
+ * Includes caching, error handling, and retry logic.
11
+ */
12
+ class EmbeddingService {
13
+ constructor(ollamaUrl = 'http://localhost:11434', model = 'llama3', maxRetries = 3, retryDelay = 1000) {
14
+ this.client = axios_1.default.create({
15
+ baseURL: ollamaUrl,
16
+ timeout: 30000, // 30 second timeout
17
+ headers: {
18
+ 'Content-Type': 'application/json',
19
+ },
20
+ });
21
+ this.model = model;
22
+ this.cache = new Map();
23
+ this.maxRetries = maxRetries;
24
+ this.retryDelay = retryDelay;
25
+ }
26
+ /**
27
+ * Generate an embedding vector for the given text.
28
+ * Uses cache if available, otherwise calls Ollama API.
29
+ *
30
+ * @param text - Text to generate embedding for
31
+ * @param useCache - Whether to use cached embeddings (default true)
32
+ * @returns Embedding vector as array of numbers
33
+ */
34
+ async generateEmbedding(text, useCache = true) {
35
+ // Normalize text for consistent caching
36
+ const normalizedText = text.trim().toLowerCase();
37
+ const cacheKey = this.getCacheKey(normalizedText);
38
+ // Check cache first
39
+ if (useCache && this.cache.has(cacheKey)) {
40
+ console.log('[EmbeddingService] Cache hit for text');
41
+ return this.cache.get(cacheKey);
42
+ }
43
+ // Generate new embedding with retry logic
44
+ let lastError = null;
45
+ for (let attempt = 1; attempt <= this.maxRetries; attempt++) {
46
+ try {
47
+ const embedding = await this.callOllamaAPI(text);
48
+ // Cache the result
49
+ if (useCache) {
50
+ this.cache.set(cacheKey, embedding);
51
+ }
52
+ console.log(`[EmbeddingService] Generated embedding (dimension: ${embedding.length})`);
53
+ return embedding;
54
+ }
55
+ catch (error) {
56
+ lastError = error;
57
+ console.warn(`[EmbeddingService] Attempt ${attempt}/${this.maxRetries} failed:`, error instanceof Error ? error.message : error);
58
+ // Wait before retrying (exponential backoff)
59
+ if (attempt < this.maxRetries) {
60
+ const delay = this.retryDelay * Math.pow(2, attempt - 1);
61
+ await this.sleep(delay);
62
+ }
63
+ }
64
+ }
65
+ // All retries failed
66
+ throw new Error(`Failed to generate embedding after ${this.maxRetries} attempts: ${lastError?.message}`);
67
+ }
68
+ /**
69
+ * Generate embeddings for multiple texts in batch.
70
+ *
71
+ * @param texts - Array of texts to generate embeddings for
72
+ * @param useCache - Whether to use cached embeddings (default true)
73
+ * @returns Array of embedding vectors
74
+ */
75
+ async generateEmbeddings(texts, useCache = true) {
76
+ const embeddings = [];
77
+ for (const text of texts) {
78
+ const embedding = await this.generateEmbedding(text, useCache);
79
+ embeddings.push(embedding);
80
+ }
81
+ return embeddings;
82
+ }
83
+ /**
84
+ * Call Ollama API to generate embedding.
85
+ *
86
+ * @param text - Text to generate embedding for
87
+ * @returns Embedding vector
88
+ */
89
+ async callOllamaAPI(text) {
90
+ try {
91
+ const response = await this.client.post('/api/embeddings', {
92
+ model: this.model,
93
+ prompt: text,
94
+ });
95
+ if (!response.data || !response.data.embedding) {
96
+ throw new Error('Invalid response from Ollama API: missing embedding');
97
+ }
98
+ return response.data.embedding;
99
+ }
100
+ catch (error) {
101
+ if (axios_1.default.isAxiosError(error)) {
102
+ if (error.code === 'ECONNREFUSED') {
103
+ throw new Error('Cannot connect to Ollama. Make sure Ollama is running at ' + this.client.defaults.baseURL);
104
+ }
105
+ if (error.response?.status === 404) {
106
+ throw new Error(`Model '${this.model}' not found. Pull it with: ollama pull ${this.model}`);
107
+ }
108
+ throw new Error(`Ollama API error: ${error.response?.status} - ${error.response?.data?.error || error.message}`);
109
+ }
110
+ throw error;
111
+ }
112
+ }
113
+ /**
114
+ * Generate a cache key from text.
115
+ * Uses a simple hash to avoid storing full text as keys.
116
+ */
117
+ getCacheKey(text) {
118
+ // Simple hash function for cache key
119
+ let hash = 0;
120
+ for (let i = 0; i < text.length; i++) {
121
+ const char = text.charCodeAt(i);
122
+ hash = (hash << 5) - hash + char;
123
+ hash = hash & hash; // Convert to 32-bit integer
124
+ }
125
+ return `emb_${hash}_${text.length}`;
126
+ }
127
+ /**
128
+ * Sleep for specified milliseconds.
129
+ */
130
+ sleep(ms) {
131
+ return new Promise((resolve) => setTimeout(resolve, ms));
132
+ }
133
+ /**
134
+ * Clear the embedding cache.
135
+ */
136
+ clearCache() {
137
+ this.cache.clear();
138
+ console.log('[EmbeddingService] Cache cleared');
139
+ }
140
+ /**
141
+ * Get cache statistics.
142
+ */
143
+ getCacheStats() {
144
+ return {
145
+ size: this.cache.size,
146
+ maxSize: 10000, // Could be configurable
147
+ };
148
+ }
149
+ /**
150
+ * Check if Ollama is available and the model is loaded.
151
+ */
152
+ async healthCheck() {
153
+ try {
154
+ // Try to generate a simple embedding
155
+ await this.callOllamaAPI('test');
156
+ return {
157
+ available: true,
158
+ model: this.model,
159
+ };
160
+ }
161
+ catch (error) {
162
+ return {
163
+ available: false,
164
+ model: this.model,
165
+ error: error instanceof Error ? error.message : String(error),
166
+ };
167
+ }
168
+ }
169
+ /**
170
+ * Calculate cosine similarity between two embedding vectors.
171
+ *
172
+ * @param vecA - First embedding vector
173
+ * @param vecB - Second embedding vector
174
+ * @returns Similarity score between 0 and 1
175
+ */
176
+ static cosineSimilarity(vecA, vecB) {
177
+ if (vecA.length !== vecB.length) {
178
+ throw new Error('Vectors must have the same dimension');
179
+ }
180
+ let dotProduct = 0;
181
+ let normA = 0;
182
+ let normB = 0;
183
+ for (let i = 0; i < vecA.length; i++) {
184
+ dotProduct += vecA[i] * vecB[i];
185
+ normA += vecA[i] * vecA[i];
186
+ normB += vecB[i] * vecB[i];
187
+ }
188
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
189
+ if (denominator === 0) {
190
+ return 0;
191
+ }
192
+ return dotProduct / denominator;
193
+ }
194
+ }
195
+ exports.EmbeddingService = EmbeddingService;
196
+ //# sourceMappingURL=EmbeddingService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../src/subconscious/EmbeddingService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { VectorStore } from './VectorStore';
2
+ import { EmbeddingService } from './EmbeddingService';
3
+ /**
4
+ * Result of a cache lookup operation.
5
+ */
6
+ export interface CacheResult {
7
+ hit: boolean;
8
+ result?: any;
9
+ similarity?: number;
10
+ taskId?: string;
11
+ latencyMs: number;
12
+ }
13
+ /**
14
+ * SemanticCache implements the "short-circuit" logic for semantic caching.
15
+ * It checks if a similar task has been resolved before and returns cached results.
16
+ */
17
+ export declare class SemanticCache {
18
+ private vectorStore;
19
+ private embeddingService;
20
+ private threshold;
21
+ private cacheHits;
22
+ private cacheMisses;
23
+ constructor(vectorStore: VectorStore, embeddingService: EmbeddingService, threshold?: number);
24
+ /**
25
+ * Check if a similar task exists in the cache.
26
+ * Returns cached result if similarity exceeds threshold.
27
+ *
28
+ * @param taskDescription - Description of the task to check
29
+ * @returns CacheResult with hit status and cached data if found
30
+ */
31
+ check(taskDescription: string): Promise<CacheResult>;
32
+ /**
33
+ * Store a task result in the cache for future lookups.
34
+ *
35
+ * @param taskId - Unique identifier for the task
36
+ * @param taskDescription - Description of the task
37
+ * @param result - Result to cache
38
+ * @param metadata - Additional metadata to store
39
+ */
40
+ store(taskId: string, taskDescription: string, result: any, metadata?: Record<string, any>): Promise<void>;
41
+ /**
42
+ * Calculate cosine similarity between two task descriptions.
43
+ * Useful for debugging and testing.
44
+ *
45
+ * @param taskA - First task description
46
+ * @param taskB - Second task description
47
+ * @returns Similarity score between 0 and 1
48
+ */
49
+ calculateSimilarity(taskA: string, taskB: string): Promise<number>;
50
+ /**
51
+ * Get cache performance metrics.
52
+ */
53
+ getMetrics(): {
54
+ hits: number;
55
+ misses: number;
56
+ total: number;
57
+ hitRate: number;
58
+ };
59
+ /**
60
+ * Reset cache metrics.
61
+ */
62
+ resetMetrics(): void;
63
+ /**
64
+ * Update the similarity threshold.
65
+ *
66
+ * @param threshold - New threshold value (0-1)
67
+ */
68
+ setThreshold(threshold: number): void;
69
+ /**
70
+ * Get the current similarity threshold.
71
+ */
72
+ getThreshold(): number;
73
+ /**
74
+ * Get the total number of cached tasks.
75
+ */
76
+ getCacheSize(): Promise<number>;
77
+ /**
78
+ * Clear all cached tasks.
79
+ */
80
+ clear(): Promise<void>;
81
+ }
82
+ //# sourceMappingURL=SemanticCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticCache.d.ts","sourceRoot":"","sources":["../../src/subconscious/SemanticCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAa;IAC9B,OAAO,CAAC,WAAW,CAAa;gBAG9B,WAAW,EAAE,WAAW,EACxB,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,GAAE,MAAa;IAO1B;;;;;;OAMG;IACG,KAAK,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwD1D;;;;;;;OAOG;IACG,KAAK,CACT,MAAM,EAAE,MAAM,EACd,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,GAAG,EACX,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GACjC,OAAO,CAAC,IAAI,CAAC;IAqBhB;;;;;;;OAOG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAcxE;;OAEG;IACH,UAAU,IAAI;QACZ,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB;IAYD;;OAEG;IACH,YAAY,IAAI,IAAI;IAMpB;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAQrC;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAIrC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
@@ -0,0 +1,164 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SemanticCache = void 0;
4
+ const EmbeddingService_1 = require("./EmbeddingService");
5
+ /**
6
+ * SemanticCache implements the "short-circuit" logic for semantic caching.
7
+ * It checks if a similar task has been resolved before and returns cached results.
8
+ */
9
+ class SemanticCache {
10
+ constructor(vectorStore, embeddingService, threshold = 0.95) {
11
+ this.cacheHits = 0;
12
+ this.cacheMisses = 0;
13
+ this.vectorStore = vectorStore;
14
+ this.embeddingService = embeddingService;
15
+ this.threshold = threshold;
16
+ }
17
+ /**
18
+ * Check if a similar task exists in the cache.
19
+ * Returns cached result if similarity exceeds threshold.
20
+ *
21
+ * @param taskDescription - Description of the task to check
22
+ * @returns CacheResult with hit status and cached data if found
23
+ */
24
+ async check(taskDescription) {
25
+ const startTime = Date.now();
26
+ try {
27
+ // Generate embedding for the task
28
+ const embedding = await this.embeddingService.generateEmbedding(taskDescription);
29
+ // Search for similar tasks
30
+ const matches = await this.vectorStore.searchSimilar(embedding, this.threshold, 1 // Only need the top match
31
+ );
32
+ const latencyMs = Date.now() - startTime;
33
+ if (matches.length > 0) {
34
+ // Cache hit!
35
+ this.cacheHits++;
36
+ const match = matches[0];
37
+ console.log(`[SemanticCache] ✓ HIT (similarity: ${match.similarity.toFixed(4)}, ` +
38
+ `latency: ${latencyMs}ms)`);
39
+ return {
40
+ hit: true,
41
+ result: match.result,
42
+ similarity: match.similarity,
43
+ taskId: match.id,
44
+ latencyMs,
45
+ };
46
+ }
47
+ else {
48
+ // Cache miss
49
+ this.cacheMisses++;
50
+ console.log(`[SemanticCache] ✗ MISS (latency: ${latencyMs}ms)`);
51
+ return {
52
+ hit: false,
53
+ latencyMs,
54
+ };
55
+ }
56
+ }
57
+ catch (error) {
58
+ console.error('[SemanticCache] Error during cache check:', error);
59
+ // On error, treat as cache miss
60
+ this.cacheMisses++;
61
+ return {
62
+ hit: false,
63
+ latencyMs: Date.now() - startTime,
64
+ };
65
+ }
66
+ }
67
+ /**
68
+ * Store a task result in the cache for future lookups.
69
+ *
70
+ * @param taskId - Unique identifier for the task
71
+ * @param taskDescription - Description of the task
72
+ * @param result - Result to cache
73
+ * @param metadata - Additional metadata to store
74
+ */
75
+ async store(taskId, taskDescription, result, metadata = {}) {
76
+ try {
77
+ // Generate embedding for the task
78
+ const embedding = await this.embeddingService.generateEmbedding(taskDescription);
79
+ // Store in vector database
80
+ await this.vectorStore.insertVector(taskId, embedding, taskDescription, result, metadata);
81
+ console.log(`[SemanticCache] Stored result for task: ${taskId}`);
82
+ }
83
+ catch (error) {
84
+ console.error('[SemanticCache] Error storing result:', error);
85
+ throw error;
86
+ }
87
+ }
88
+ /**
89
+ * Calculate cosine similarity between two task descriptions.
90
+ * Useful for debugging and testing.
91
+ *
92
+ * @param taskA - First task description
93
+ * @param taskB - Second task description
94
+ * @returns Similarity score between 0 and 1
95
+ */
96
+ async calculateSimilarity(taskA, taskB) {
97
+ try {
98
+ const [embeddingA, embeddingB] = await this.embeddingService.generateEmbeddings([
99
+ taskA,
100
+ taskB,
101
+ ]);
102
+ return EmbeddingService_1.EmbeddingService.cosineSimilarity(embeddingA, embeddingB);
103
+ }
104
+ catch (error) {
105
+ console.error('[SemanticCache] Error calculating similarity:', error);
106
+ throw error;
107
+ }
108
+ }
109
+ /**
110
+ * Get cache performance metrics.
111
+ */
112
+ getMetrics() {
113
+ const total = this.cacheHits + this.cacheMisses;
114
+ const hitRate = total > 0 ? this.cacheHits / total : 0;
115
+ return {
116
+ hits: this.cacheHits,
117
+ misses: this.cacheMisses,
118
+ total,
119
+ hitRate,
120
+ };
121
+ }
122
+ /**
123
+ * Reset cache metrics.
124
+ */
125
+ resetMetrics() {
126
+ this.cacheHits = 0;
127
+ this.cacheMisses = 0;
128
+ console.log('[SemanticCache] Metrics reset');
129
+ }
130
+ /**
131
+ * Update the similarity threshold.
132
+ *
133
+ * @param threshold - New threshold value (0-1)
134
+ */
135
+ setThreshold(threshold) {
136
+ if (threshold < 0 || threshold > 1) {
137
+ throw new Error('Threshold must be between 0 and 1');
138
+ }
139
+ this.threshold = threshold;
140
+ console.log(`[SemanticCache] Threshold updated to ${threshold}`);
141
+ }
142
+ /**
143
+ * Get the current similarity threshold.
144
+ */
145
+ getThreshold() {
146
+ return this.threshold;
147
+ }
148
+ /**
149
+ * Get the total number of cached tasks.
150
+ */
151
+ async getCacheSize() {
152
+ return await this.vectorStore.getCount();
153
+ }
154
+ /**
155
+ * Clear all cached tasks.
156
+ */
157
+ async clear() {
158
+ await this.vectorStore.clear();
159
+ this.resetMetrics();
160
+ console.log('[SemanticCache] Cache cleared');
161
+ }
162
+ }
163
+ exports.SemanticCache = SemanticCache;
164
+ //# sourceMappingURL=SemanticCache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SemanticCache.js","sourceRoot":"","sources":["../../src/subconscious/SemanticCache.ts"],"names":[],"mappings":";;;AACA,yDAAsD;AAatD;;;GAGG;AACH,MAAa,aAAa;IAOxB,YACE,WAAwB,EACxB,gBAAkC,EAClC,YAAoB,IAAI;QANlB,cAAS,GAAW,CAAC,CAAC;QACtB,gBAAW,GAAW,CAAC,CAAC;QAO9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,KAAK,CAAC,eAAuB;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YAEjF,2BAA2B;YAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAClD,SAAS,EACT,IAAI,CAAC,SAAS,EACd,CAAC,CAAC,0BAA0B;aAC7B,CAAC;YAEF,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAEzC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,aAAa;gBACb,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEzB,OAAO,CAAC,GAAG,CACT,sCAAsC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;oBACrE,YAAY,SAAS,KAAK,CAC3B,CAAC;gBAEF,OAAO;oBACL,GAAG,EAAE,IAAI;oBACT,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,MAAM,EAAE,KAAK,CAAC,EAAE;oBAChB,SAAS;iBACV,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,aAAa;gBACb,IAAI,CAAC,WAAW,EAAE,CAAC;gBAEnB,OAAO,CAAC,GAAG,CAAC,oCAAoC,SAAS,KAAK,CAAC,CAAC;gBAEhE,OAAO;oBACL,GAAG,EAAE,KAAK;oBACV,SAAS;iBACV,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YAElE,gCAAgC;YAChC,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;gBACL,GAAG,EAAE,KAAK;gBACV,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;aAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CACT,MAAc,EACd,eAAuB,EACvB,MAAW,EACX,WAAgC,EAAE;QAElC,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YAEjF,2BAA2B;YAC3B,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,CACjC,MAAM,EACN,SAAS,EACT,eAAe,EACf,MAAM,EACN,QAAQ,CACT,CAAC;YAEF,OAAO,CAAC,GAAG,CAAC,2CAA2C,MAAM,EAAE,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,mBAAmB,CAAC,KAAa,EAAE,KAAa;QACpD,IAAI,CAAC;YACH,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;gBAC9E,KAAK;gBACL,KAAK;aACN,CAAC,CAAC;YAEH,OAAO,mCAAgB,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACnE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,+CAA+C,EAAE,KAAK,CAAC,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QAMR,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;QAChD,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,SAAS;YACpB,MAAM,EAAE,IAAI,CAAC,WAAW;YACxB,KAAK;YACL,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;IAED;;;;OAIG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,SAAS,GAAG,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,OAAO,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;CACF;AAxMD,sCAwMC"}
@@ -0,0 +1,121 @@
1
+ import { CacheResult } from './SemanticCache';
2
+ import { EventEmitter } from 'events';
3
+ /**
4
+ * Configuration options for SubconsciousEngine.
5
+ */
6
+ export interface SubconsciousConfig {
7
+ chromaUrl?: string;
8
+ ollamaUrl?: string;
9
+ model?: string;
10
+ collectionName?: string;
11
+ threshold?: number;
12
+ enableBackgroundVectorization?: boolean;
13
+ }
14
+ /**
15
+ * Task to be processed by the engine.
16
+ */
17
+ export interface Task {
18
+ id: string;
19
+ description: string;
20
+ metadata?: Record<string, any>;
21
+ }
22
+ /**
23
+ * Result of task processing.
24
+ */
25
+ export interface TaskResult {
26
+ taskId: string;
27
+ result: any;
28
+ fromCache: boolean;
29
+ similarity?: number;
30
+ latencyMs: number;
31
+ timestamp: string;
32
+ }
33
+ /**
34
+ * Engine metrics for monitoring performance.
35
+ */
36
+ export interface EngineMetrics {
37
+ totalTasks: number;
38
+ cacheHits: number;
39
+ cacheMisses: number;
40
+ hitRate: number;
41
+ avgCacheLatencyMs: number;
42
+ avgMissLatencyMs: number;
43
+ totalCachedTasks: number;
44
+ backgroundQueueSize: number;
45
+ }
46
+ /**
47
+ * SubconsciousEngine is the main orchestrator for semantic caching.
48
+ * It intercepts tasks, checks for cached results, and manages background vectorization.
49
+ */
50
+ export declare class SubconsciousEngine extends EventEmitter {
51
+ private vectorStore;
52
+ private embeddingService;
53
+ private semanticCache;
54
+ private config;
55
+ private isInitialized;
56
+ private backgroundQueue;
57
+ private isProcessingQueue;
58
+ private cacheLatencies;
59
+ private missLatencies;
60
+ constructor(config?: SubconsciousConfig);
61
+ /**
62
+ * Initialize the Subconscious Engine.
63
+ * Must be called before using the engine.
64
+ */
65
+ initialize(): Promise<void>;
66
+ /**
67
+ * Intercept a task and check for cached results.
68
+ * This is the main entry point for the semantic short-circuit.
69
+ *
70
+ * @param task - Task to intercept
71
+ * @returns CacheResult indicating if a cached result was found
72
+ */
73
+ interceptTask(task: Task): Promise<CacheResult>;
74
+ /**
75
+ * Store a task result for future caching.
76
+ * If background vectorization is enabled, queues the task for async processing.
77
+ *
78
+ * @param task - Original task
79
+ * @param result - Result to cache
80
+ */
81
+ storeResult(task: Task, result: any): Promise<void>;
82
+ /**
83
+ * Process the background vectorization queue.
84
+ * Runs asynchronously without blocking the main thread.
85
+ */
86
+ private processBackgroundQueue;
87
+ /**
88
+ * Get comprehensive engine metrics.
89
+ */
90
+ getMetrics(): Promise<EngineMetrics>;
91
+ /**
92
+ * Reset all metrics.
93
+ */
94
+ resetMetrics(): void;
95
+ /**
96
+ * Update the similarity threshold.
97
+ */
98
+ setThreshold(threshold: number): void;
99
+ /**
100
+ * Get the current configuration.
101
+ */
102
+ getConfig(): Required<SubconsciousConfig>;
103
+ /**
104
+ * Clear all cached tasks and reset metrics.
105
+ */
106
+ clear(): Promise<void>;
107
+ /**
108
+ * Shutdown the engine gracefully.
109
+ * Waits for background queue to finish processing.
110
+ */
111
+ shutdown(): Promise<void>;
112
+ /**
113
+ * Check if the engine is ready to use.
114
+ */
115
+ isReady(): boolean;
116
+ /**
117
+ * Sleep for specified milliseconds.
118
+ */
119
+ private sleep;
120
+ }
121
+ //# sourceMappingURL=SubconsciousEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubconsciousEngine.d.ts","sourceRoot":"","sources":["../../src/subconscious/SubconsciousEngine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,eAAe,CAKf;IACR,OAAO,CAAC,iBAAiB,CAAkB;IAC3C,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,aAAa,CAAgB;gBAEzB,MAAM,GAAE,kBAAuB;IA+B3C;;;OAGG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCjC;;;;;;OAMG;IACG,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;IA4BrD;;;;;;OAMG;IACG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCzD;;;OAGG;YACW,sBAAsB;IAqCpC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC;IA0B1C;;OAEG;IACH,YAAY,IAAI,IAAI;IAOpB;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAKrC;;OAEG;IACH,SAAS,IAAI,QAAQ,CAAC,kBAAkB,CAAC;IAIzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAO5B;;;OAGG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB/B;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}