@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,408 @@
1
+ "use strict";
2
+ /**
3
+ * Lemma Embedded Mode
4
+ *
5
+ * Zero-config semantic cache for any project.
6
+ * No separate server, no WebSocket, no agents required.
7
+ *
8
+ * Usage:
9
+ * import { Lemma } from 'lemma/embed';
10
+ *
11
+ * const lemma = await Lemma.create();
12
+ * const suggest = lemma.wrap(myOpenAIFunction);
13
+ * const result = await suggest('pollo y arroz'); // cached after first call
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ var __importDefault = (this && this.__importDefault) || function (mod) {
49
+ return (mod && mod.__esModule) ? mod : { "default": mod };
50
+ };
51
+ Object.defineProperty(exports, "__esModule", { value: true });
52
+ exports.Lemma = void 0;
53
+ const events_1 = require("events");
54
+ const crypto_1 = __importDefault(require("crypto"));
55
+ class MemoryBackend {
56
+ constructor(maxSize = 10000) {
57
+ this.store = new Map();
58
+ this.maxSize = maxSize;
59
+ }
60
+ async set(key, input, data, ttl) {
61
+ // Evict oldest entry if at capacity
62
+ if (this.store.size >= this.maxSize) {
63
+ const oldest = this.store.keys().next().value;
64
+ if (oldest)
65
+ this.store.delete(oldest);
66
+ }
67
+ this.store.set(key, { key, input, data, createdAt: Date.now(), ttl });
68
+ }
69
+ async get(key) {
70
+ const entry = this.store.get(key);
71
+ if (!entry)
72
+ return null;
73
+ if (entry.ttl > 0 && Date.now() - entry.createdAt > entry.ttl) {
74
+ this.store.delete(key);
75
+ return null;
76
+ }
77
+ return entry.data;
78
+ }
79
+ /**
80
+ * Exact key lookup — used for memory mode (no vector similarity)
81
+ */
82
+ async findSimilar(input, _threshold) {
83
+ // In memory mode we do exact normalized match
84
+ const normalized = normalizeText(input);
85
+ for (const entry of this.store.values()) {
86
+ if (normalizeText(entry.input) === normalized) {
87
+ return { data: entry.data, similarity: 1.0 };
88
+ }
89
+ }
90
+ return null;
91
+ }
92
+ size() {
93
+ return this.store.size;
94
+ }
95
+ clear() {
96
+ this.store.clear();
97
+ }
98
+ }
99
+ // ─── ChromaDB + Ollama Backend ────────────────────────────────────────────────
100
+ class ChromaBackend {
101
+ constructor(chromaUrl, ollamaUrl, model, collection) {
102
+ this.embeddingCache = new Map();
103
+ // Lazy-loaded to avoid import errors when not using chroma
104
+ this.chromaClient = null;
105
+ this.chromaCollection = null;
106
+ this.chromaUrl = chromaUrl;
107
+ this.ollamaUrl = ollamaUrl;
108
+ this.model = model;
109
+ this.collection = collection;
110
+ }
111
+ async initialize() {
112
+ try {
113
+ const { ChromaClient } = await Promise.resolve().then(() => __importStar(require('chromadb')));
114
+ this.chromaClient = new ChromaClient({ path: this.chromaUrl });
115
+ this.chromaCollection = await this.chromaClient.getOrCreateCollection({
116
+ name: this.collection,
117
+ metadata: { 'hnsw:space': 'cosine' },
118
+ });
119
+ }
120
+ catch (err) {
121
+ throw new Error(`Lemma: Could not connect to ChromaDB at ${this.chromaUrl}.\n` +
122
+ `Make sure ChromaDB is running: chroma run --path ./chroma_data\n` +
123
+ `Original error: ${err.message}`);
124
+ }
125
+ }
126
+ async set(key, input, data, _ttl) {
127
+ const embedding = await this.embed(input);
128
+ await this.chromaCollection.add({
129
+ ids: [key],
130
+ embeddings: [embedding],
131
+ documents: [input],
132
+ metadatas: [{ data: JSON.stringify(data), timestamp: Date.now() }],
133
+ });
134
+ }
135
+ async findSimilar(input, threshold) {
136
+ const embedding = await this.embed(input);
137
+ const results = await this.chromaCollection.query({
138
+ queryEmbeddings: [embedding],
139
+ nResults: 1,
140
+ include: ['metadatas', 'distances'],
141
+ });
142
+ if (!results.ids?.[0]?.length)
143
+ return null;
144
+ const distance = results.distances[0][0];
145
+ const similarity = 1 - distance;
146
+ if (similarity < threshold)
147
+ return null;
148
+ const meta = results.metadatas[0][0];
149
+ return { data: JSON.parse(meta.data), similarity };
150
+ }
151
+ async embed(text) {
152
+ const key = normalizeText(text);
153
+ if (this.embeddingCache.has(key))
154
+ return this.embeddingCache.get(key);
155
+ const axios = (await Promise.resolve().then(() => __importStar(require('axios')))).default;
156
+ const res = await axios.post(`${this.ollamaUrl}/api/embeddings`, {
157
+ model: this.model,
158
+ prompt: text,
159
+ });
160
+ const embedding = res.data.embedding;
161
+ this.embeddingCache.set(key, embedding);
162
+ return embedding;
163
+ }
164
+ size() {
165
+ return 0; // ChromaDB doesn't expose sync count
166
+ }
167
+ clear() {
168
+ this.embeddingCache.clear();
169
+ }
170
+ }
171
+ // ─── Cloud Backend ────────────────────────────────────────────────────────────
172
+ class CloudBackend {
173
+ constructor(apiKey, cloudUrl) {
174
+ this.axios = null;
175
+ this.apiKey = apiKey;
176
+ this.cloudUrl = cloudUrl.replace(/\/$/, '');
177
+ }
178
+ async initialize() {
179
+ this.axios = (await Promise.resolve().then(() => __importStar(require('axios')))).default;
180
+ // Validate key on startup
181
+ try {
182
+ await this.axios.get(`${this.cloudUrl}/v1/ping`, {
183
+ headers: { Authorization: `Bearer ${this.apiKey}` },
184
+ timeout: 5000,
185
+ });
186
+ }
187
+ catch (err) {
188
+ const status = err.response?.status;
189
+ if (status === 401)
190
+ throw new Error('Lemma Cloud: Invalid API key. Check your key at https://lemma.dev');
191
+ if (status === 403)
192
+ throw new Error('Lemma Cloud: API key suspended or plan limit reached.');
193
+ throw new Error(`Lemma Cloud: Could not connect to ${this.cloudUrl}. ${err.message}`);
194
+ }
195
+ }
196
+ async set(key, input, data, ttl) {
197
+ await this.axios.post(`${this.cloudUrl}/v1/cache`, { key, input, data, ttl }, { headers: { Authorization: `Bearer ${this.apiKey}` }, timeout: 10000 });
198
+ }
199
+ async findSimilar(input, threshold) {
200
+ try {
201
+ const res = await this.axios.post(`${this.cloudUrl}/v1/query`, { input, threshold }, { headers: { Authorization: `Bearer ${this.apiKey}` }, timeout: 10000 });
202
+ if (res.data?.hit) {
203
+ return { data: res.data.data, similarity: res.data.similarity };
204
+ }
205
+ return null;
206
+ }
207
+ catch (err) {
208
+ // On cloud error, degrade gracefully — treat as miss
209
+ if (err.response?.status === 429)
210
+ throw new Error('Lemma Cloud: Rate limit exceeded. Upgrade your plan at https://lemma.dev');
211
+ return null;
212
+ }
213
+ }
214
+ size() { return -1; }
215
+ clear() { }
216
+ }
217
+ class Lemma extends events_1.EventEmitter {
218
+ constructor(config) {
219
+ super();
220
+ this.metrics = { hits: 0, misses: 0, totalLatency: 0 };
221
+ this.ready = false;
222
+ this.config = config;
223
+ }
224
+ /**
225
+ * Create and initialize a Lemma instance.
226
+ *
227
+ * @example
228
+ * // Zero config — in-memory cache
229
+ * const lemma = await Lemma.create();
230
+ *
231
+ * @example
232
+ * // Persistent semantic cache with ChromaDB
233
+ * const lemma = await Lemma.create({
234
+ * storage: 'chroma',
235
+ * threshold: 0.90,
236
+ * });
237
+ */
238
+ static async create(config = {}) {
239
+ const resolved = {
240
+ storage: config.storage ?? 'memory',
241
+ threshold: config.threshold ?? 0.92,
242
+ apiKey: config.apiKey ?? '',
243
+ cloudUrl: config.cloudUrl ?? 'https://api.lemma.dev',
244
+ chromaUrl: config.chromaUrl ?? 'http://localhost:8000',
245
+ ollamaUrl: config.ollamaUrl ?? 'http://localhost:11434',
246
+ ollamaModel: config.ollamaModel ?? 'llama3',
247
+ collection: config.collection ?? 'lemma_cache',
248
+ ttl: config.ttl ?? 0,
249
+ maxSize: config.maxSize ?? 10000,
250
+ debug: config.debug ?? false,
251
+ };
252
+ const instance = new Lemma(resolved);
253
+ await instance.init();
254
+ return instance;
255
+ }
256
+ async init() {
257
+ if (this.config.storage === 'cloud') {
258
+ if (!this.config.apiKey) {
259
+ throw new Error('Lemma Cloud requires an API key. Get yours at https://lemma.dev\nUsage: Lemma.create({ storage: \'cloud\', apiKey: \'lk_...\' })');
260
+ }
261
+ const backend = new CloudBackend(this.config.apiKey, this.config.cloudUrl);
262
+ await backend.initialize();
263
+ this.backend = backend;
264
+ this.log('✅ Lemma ready (storage: cloud)');
265
+ }
266
+ else if (this.config.storage === 'chroma') {
267
+ const backend = new ChromaBackend(this.config.chromaUrl, this.config.ollamaUrl, this.config.ollamaModel, this.config.collection);
268
+ await backend.initialize();
269
+ this.backend = backend;
270
+ this.log('✅ Lemma ready (storage: chroma)');
271
+ }
272
+ else {
273
+ this.backend = new MemoryBackend(this.config.maxSize);
274
+ this.log('✅ Lemma ready (storage: memory)');
275
+ }
276
+ this.ready = true;
277
+ }
278
+ /**
279
+ * Wrap any async function with semantic caching.
280
+ * The first argument of the function is used as the cache key.
281
+ *
282
+ * @example
283
+ * const cachedSuggest = lemma.wrap(async (ingredients: string) => {
284
+ * return await openai.chat.completions.create({ ... });
285
+ * });
286
+ *
287
+ * await cachedSuggest('pollo y arroz'); // calls OpenAI
288
+ * await cachedSuggest('arroz con pollo'); // returns from cache ⚡
289
+ */
290
+ wrap(fn) {
291
+ return async (...args) => {
292
+ const input = args[0];
293
+ return this.run(input, () => fn(...args));
294
+ };
295
+ }
296
+ /**
297
+ * Manually check cache and run function if miss.
298
+ *
299
+ * @example
300
+ * const result = await lemma.run(
301
+ * userMessage,
302
+ * () => openai.chat.completions.create({ ... })
303
+ * );
304
+ * if (result.fromCache) console.log('⚡ Saved an API call!');
305
+ */
306
+ async run(input, fn) {
307
+ this.assertReady();
308
+ const start = Date.now();
309
+ // Check cache
310
+ const cached = await this.backend.findSimilar(input, this.config.threshold);
311
+ if (cached) {
312
+ const latencyMs = Date.now() - start;
313
+ this.metrics.hits++;
314
+ this.metrics.totalLatency += latencyMs;
315
+ this.log(`⚡ Cache hit (similarity: ${cached.similarity.toFixed(3)}, ${latencyMs}ms)`);
316
+ this.emit('hit', { input, similarity: cached.similarity, latencyMs });
317
+ return { data: cached.data, fromCache: true, similarity: cached.similarity, latencyMs };
318
+ }
319
+ // Cache miss — run the function
320
+ this.metrics.misses++;
321
+ const data = await fn();
322
+ const latencyMs = Date.now() - start;
323
+ this.metrics.totalLatency += latencyMs;
324
+ // Store result async (don't block the response)
325
+ const key = generateKey(input);
326
+ this.backend.set(key, input, data, this.config.ttl).catch((err) => {
327
+ this.log(`⚠️ Failed to store in cache: ${err.message}`);
328
+ });
329
+ this.log(`🔄 Cache miss (${latencyMs}ms) — stored for future use`);
330
+ this.emit('miss', { input, latencyMs });
331
+ return { data, fromCache: false, latencyMs };
332
+ }
333
+ /**
334
+ * Manually get a value from cache.
335
+ * Returns null if not found.
336
+ */
337
+ async get(input) {
338
+ this.assertReady();
339
+ const start = Date.now();
340
+ const cached = await this.backend.findSimilar(input, this.config.threshold);
341
+ if (!cached)
342
+ return null;
343
+ return {
344
+ data: cached.data,
345
+ fromCache: true,
346
+ similarity: cached.similarity,
347
+ latencyMs: Date.now() - start,
348
+ };
349
+ }
350
+ /**
351
+ * Manually store a value in cache.
352
+ */
353
+ async set(input, data) {
354
+ this.assertReady();
355
+ const key = generateKey(input);
356
+ await this.backend.set(key, input, data, this.config.ttl);
357
+ this.log(`📦 Stored: "${input.slice(0, 50)}..."`);
358
+ }
359
+ /**
360
+ * Get performance metrics.
361
+ */
362
+ getMetrics() {
363
+ const total = this.metrics.hits + this.metrics.misses;
364
+ return {
365
+ hits: this.metrics.hits,
366
+ misses: this.metrics.misses,
367
+ total,
368
+ hitRate: total > 0 ? this.metrics.hits / total : 0,
369
+ avgLatencyMs: total > 0 ? Math.round(this.metrics.totalLatency / total) : 0,
370
+ cacheSize: this.backend instanceof MemoryBackend ? this.backend.size() : -1,
371
+ };
372
+ }
373
+ /**
374
+ * Clear all cached entries and reset metrics.
375
+ */
376
+ clear() {
377
+ this.backend.clear();
378
+ this.metrics = { hits: 0, misses: 0, totalLatency: 0 };
379
+ this.log('🗑️ Cache cleared');
380
+ }
381
+ /**
382
+ * Update similarity threshold at runtime.
383
+ */
384
+ setThreshold(threshold) {
385
+ if (threshold < 0 || threshold > 1)
386
+ throw new Error('Threshold must be 0–1');
387
+ this.config.threshold = threshold;
388
+ }
389
+ assertReady() {
390
+ if (!this.ready)
391
+ throw new Error('Lemma not initialized. Use Lemma.create()');
392
+ }
393
+ log(msg) {
394
+ if (this.config.debug)
395
+ console.log(`[Lemma] ${msg}`);
396
+ }
397
+ }
398
+ exports.Lemma = Lemma;
399
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
400
+ function normalizeText(text) {
401
+ return text.trim().toLowerCase().replace(/\s+/g, ' ');
402
+ }
403
+ function generateKey(input) {
404
+ return crypto_1.default.createHash('sha256').update(normalizeText(input)).digest('hex').slice(0, 16);
405
+ }
406
+ // ─── Default export ───────────────────────────────────────────────────────────
407
+ exports.default = Lemma;
408
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/embed/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Lemma Embedded Mode — standalone entry point
3
+ * Import this directly to use only the semantic cache
4
+ * without the full agent orchestration stack.
5
+ *
6
+ * @example
7
+ * import { Lemma } from 'lemma/embed';
8
+ */
9
+ export { Lemma, LemmaConfig, CacheResult, LemmaMetrics } from './embed/index';
10
+ export { default } from './embed/index';
11
+ //# sourceMappingURL=embed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.d.ts","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC"}
package/dist/embed.js ADDED
@@ -0,0 +1,19 @@
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.default = exports.Lemma = void 0;
7
+ /**
8
+ * Lemma Embedded Mode — standalone entry point
9
+ * Import this directly to use only the semantic cache
10
+ * without the full agent orchestration stack.
11
+ *
12
+ * @example
13
+ * import { Lemma } from 'lemma/embed';
14
+ */
15
+ var index_1 = require("./embed/index");
16
+ Object.defineProperty(exports, "Lemma", { enumerable: true, get: function () { return index_1.Lemma; } });
17
+ var index_2 = require("./embed/index");
18
+ Object.defineProperty(exports, "default", { enumerable: true, get: function () { return __importDefault(index_2).default; } });
19
+ //# sourceMappingURL=embed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embed.js","sourceRoot":"","sources":["../src/embed.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;;;GAOG;AACH,uCAA8E;AAArE,8FAAA,KAAK,OAAA;AACd,uCAAwC;AAA/B,iHAAA,OAAO,OAAA"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Subconscious Router - Main Entry Point
3
+ *
4
+ * High-performance orchestration hub for autonomous AI agents
5
+ * Implements the Inter-Agent Protocol (I.A.P.) for standardized communication
6
+ */
7
+ import { WebSocketServer } from './core/WebSocketServer';
8
+ import { AgentRegistry } from './core/AgentRegistry';
9
+ import { Router } from './core/router';
10
+ import { ServerConfig, RouterConfig } from './types';
11
+ /**
12
+ * Main Hub Configuration
13
+ */
14
+ export interface HubConfig {
15
+ server?: ServerConfig;
16
+ router?: RouterConfig;
17
+ }
18
+ /**
19
+ * Subconscious Router Hub
20
+ * Orchestrates WebSocket connections, agent registry, and message routing
21
+ */
22
+ export declare class SubconsciousHub {
23
+ private wsServer;
24
+ private agentRegistry;
25
+ private router;
26
+ private isRunning;
27
+ constructor(config?: HubConfig);
28
+ /**
29
+ * Setup event handlers for monitoring
30
+ */
31
+ private setupEventHandlers;
32
+ /**
33
+ * Start the hub
34
+ */
35
+ start(): Promise<void>;
36
+ /**
37
+ * Stop the hub
38
+ */
39
+ stop(): Promise<void>;
40
+ /**
41
+ * Get hub statistics
42
+ */
43
+ getStats(): {
44
+ pendingTasks: number;
45
+ agentStats: {
46
+ totalAgents: number;
47
+ onlineAgents: number;
48
+ offlineAgents: number;
49
+ totalCapabilities: number;
50
+ totalTasksInProgress: number;
51
+ totalTasksCompleted: number;
52
+ totalTasksFailed: number;
53
+ };
54
+ connectionStats: import("./types").ConnectionStats;
55
+ };
56
+ /**
57
+ * Print current status
58
+ */
59
+ printStatus(): void;
60
+ /**
61
+ * Get WebSocket server instance
62
+ */
63
+ getWebSocketServer(): WebSocketServer;
64
+ /**
65
+ * Get agent registry instance
66
+ */
67
+ getAgentRegistry(): AgentRegistry;
68
+ /**
69
+ * Get router instance
70
+ */
71
+ getRouter(): Router;
72
+ }
73
+ export * from './types';
74
+ export * from './core';
75
+ export * from './security';
76
+ export * as Protocol from './protocol';
77
+ export * as Subconscious from './subconscious';
78
+ export * as Consensus from './consensus';
79
+ export * as Speculative from './speculative';
80
+ export { config, getSecurityConfig, validateConfig } from './config';
81
+ export { Lemma, LemmaConfig, CacheResult, LemmaMetrics } from './embed';
82
+ export default SubconsciousHub;
83
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,MAAM,CAAC,EAAE,YAAY,CAAC;CACvB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAkB;gBAEvB,MAAM,GAAE,SAAc;IAalC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAcnC;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAelC;;OAEG;IACI,QAAQ;;;;;;;;;;;;;IAIf;;OAEG;IACI,WAAW,IAAI,IAAI;IAU1B;;OAEG;IACI,kBAAkB,IAAI,eAAe;IAI5C;;OAEG;IACI,gBAAgB,IAAI,aAAa;IAIxC;;OAEG;IACI,SAAS,IAAI,MAAM;CAG3B;AAGD,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAGrE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGxE,eAAe,eAAe,CAAC"}