@kb-labs/core-platform 1.0.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 (56) hide show
  1. package/README.md +108 -0
  2. package/dist/adapters/index.cjs +26 -0
  3. package/dist/adapters/index.cjs.map +1 -0
  4. package/dist/adapters/index.d.cts +125 -0
  5. package/dist/adapters/index.d.ts +125 -0
  6. package/dist/adapters/index.js +21 -0
  7. package/dist/adapters/index.js.map +1 -0
  8. package/dist/artifacts-BUghvkUU.d.cts +273 -0
  9. package/dist/artifacts-Bd-1UVTw.d.ts +273 -0
  10. package/dist/artifacts-DrVnkLzu.d.cts +1374 -0
  11. package/dist/artifacts-DrVnkLzu.d.ts +1374 -0
  12. package/dist/core/index.cjs +4 -0
  13. package/dist/core/index.cjs.map +1 -0
  14. package/dist/core/index.d.cts +2 -0
  15. package/dist/core/index.d.ts +2 -0
  16. package/dist/core/index.js +3 -0
  17. package/dist/core/index.js.map +1 -0
  18. package/dist/database-DGV6a1nj.d.cts +427 -0
  19. package/dist/database-DGV6a1nj.d.ts +427 -0
  20. package/dist/index.cjs +1405 -0
  21. package/dist/index.cjs.map +1 -0
  22. package/dist/index.d.cts +579 -0
  23. package/dist/index.d.ts +579 -0
  24. package/dist/index.js +1381 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/log-reader-BVohbSMB.d.cts +314 -0
  27. package/dist/log-reader-uOHBLBax.d.ts +314 -0
  28. package/dist/noop/adapters/index.cjs +656 -0
  29. package/dist/noop/adapters/index.cjs.map +1 -0
  30. package/dist/noop/adapters/index.d.cts +71 -0
  31. package/dist/noop/adapters/index.d.ts +71 -0
  32. package/dist/noop/adapters/index.js +637 -0
  33. package/dist/noop/adapters/index.js.map +1 -0
  34. package/dist/noop/core/index.cjs +217 -0
  35. package/dist/noop/core/index.cjs.map +1 -0
  36. package/dist/noop/core/index.d.cts +94 -0
  37. package/dist/noop/core/index.d.ts +94 -0
  38. package/dist/noop/core/index.js +212 -0
  39. package/dist/noop/core/index.js.map +1 -0
  40. package/dist/noop/index.cjs +806 -0
  41. package/dist/noop/index.cjs.map +1 -0
  42. package/dist/noop/index.d.cts +36 -0
  43. package/dist/noop/index.d.ts +36 -0
  44. package/dist/noop/index.js +787 -0
  45. package/dist/noop/index.js.map +1 -0
  46. package/dist/resources-DaufJFad.d.cts +419 -0
  47. package/dist/resources-DaufJFad.d.ts +419 -0
  48. package/dist/serializable/index.cjs +162 -0
  49. package/dist/serializable/index.cjs.map +1 -0
  50. package/dist/serializable/index.d.cts +352 -0
  51. package/dist/serializable/index.d.ts +352 -0
  52. package/dist/serializable/index.js +152 -0
  53. package/dist/serializable/index.js.map +1 -0
  54. package/dist/snapshot-provider--COac4P-.d.ts +923 -0
  55. package/dist/snapshot-provider-nE9wuc1C.d.cts +923 -0
  56. package/package.json +92 -0
@@ -0,0 +1,656 @@
1
+ 'use strict';
2
+
3
+ // src/noop/adapters/analytics.ts
4
+ var NoOpAnalytics = class {
5
+ async track(_event, _properties) {
6
+ }
7
+ async identify(_userId, _traits) {
8
+ }
9
+ async flush() {
10
+ }
11
+ };
12
+
13
+ // src/noop/adapters/vector-store.ts
14
+ function cosineSimilarity(a, b) {
15
+ if (a.length !== b.length) {
16
+ return 0;
17
+ }
18
+ let dotProduct = 0;
19
+ let normA = 0;
20
+ let normB = 0;
21
+ for (let i = 0; i < a.length; i++) {
22
+ const aVal = a[i] ?? 0;
23
+ const bVal = b[i] ?? 0;
24
+ dotProduct += aVal * bVal;
25
+ normA += aVal * aVal;
26
+ normB += bVal * bVal;
27
+ }
28
+ const denominator = Math.sqrt(normA) * Math.sqrt(normB);
29
+ return denominator === 0 ? 0 : dotProduct / denominator;
30
+ }
31
+ function matchesFilter(record, filter) {
32
+ const value = record.metadata?.[filter.field];
33
+ switch (filter.operator) {
34
+ case "eq":
35
+ return value === filter.value;
36
+ case "ne":
37
+ return value !== filter.value;
38
+ case "gt":
39
+ return typeof value === "number" && value > filter.value;
40
+ case "gte":
41
+ return typeof value === "number" && value >= filter.value;
42
+ case "lt":
43
+ return typeof value === "number" && value < filter.value;
44
+ case "lte":
45
+ return typeof value === "number" && value <= filter.value;
46
+ case "in":
47
+ return Array.isArray(filter.value) && filter.value.includes(value);
48
+ case "nin":
49
+ return Array.isArray(filter.value) && !filter.value.includes(value);
50
+ default:
51
+ return true;
52
+ }
53
+ }
54
+ var MemoryVectorStore = class {
55
+ vectors = /* @__PURE__ */ new Map();
56
+ async search(query, limit, filter) {
57
+ const results = [];
58
+ for (const record of this.vectors.values()) {
59
+ if (filter && !matchesFilter(record, filter)) {
60
+ continue;
61
+ }
62
+ const score = cosineSimilarity(query, record.vector);
63
+ results.push({
64
+ id: record.id,
65
+ score,
66
+ metadata: record.metadata
67
+ });
68
+ }
69
+ return results.sort((a, b) => b.score - a.score).slice(0, limit);
70
+ }
71
+ async upsert(vectors) {
72
+ for (const vector of vectors) {
73
+ this.vectors.set(vector.id, vector);
74
+ }
75
+ }
76
+ async delete(ids) {
77
+ for (const id of ids) {
78
+ this.vectors.delete(id);
79
+ }
80
+ }
81
+ async count() {
82
+ return this.vectors.size;
83
+ }
84
+ };
85
+
86
+ // src/noop/adapters/llm.ts
87
+ var MockLLM = class {
88
+ getProtocolCapabilities() {
89
+ return {
90
+ cache: { supported: false },
91
+ stream: { supported: true }
92
+ };
93
+ }
94
+ async complete(prompt, options) {
95
+ const content = `[Mock LLM Response] Received prompt of ${prompt.length} characters.`;
96
+ return {
97
+ content,
98
+ usage: {
99
+ promptTokens: Math.ceil(prompt.length / 4),
100
+ completionTokens: Math.ceil(content.length / 4)
101
+ },
102
+ model: options?.model ?? "mock-model"
103
+ };
104
+ }
105
+ async *stream(prompt, options) {
106
+ const response = `[Mock LLM Stream] Received prompt of ${prompt.length} characters.`;
107
+ const words = response.split(" ");
108
+ for (const word of words) {
109
+ yield word + " ";
110
+ await new Promise((resolve) => {
111
+ setTimeout(resolve, 50);
112
+ });
113
+ }
114
+ }
115
+ };
116
+
117
+ // src/noop/adapters/embeddings.ts
118
+ var MockEmbeddings = class {
119
+ dimensions = 1536;
120
+ /**
121
+ * Simple hash function for deterministic embedding generation.
122
+ */
123
+ hash(text) {
124
+ let hash = 0;
125
+ for (let i = 0; i < text.length; i++) {
126
+ const char = text.charCodeAt(i);
127
+ hash = (hash << 5) - hash + char;
128
+ hash = hash & hash;
129
+ }
130
+ return hash;
131
+ }
132
+ /**
133
+ * Generate a deterministic vector based on text.
134
+ */
135
+ generateVector(text) {
136
+ const seed = this.hash(text);
137
+ const vector = [];
138
+ for (let i = 0; i < this.dimensions; i++) {
139
+ const value = Math.sin(seed * (i + 1)) * 0.5;
140
+ vector.push(value);
141
+ }
142
+ const magnitude = Math.sqrt(vector.reduce((sum, v) => sum + v * v, 0));
143
+ return vector.map((v) => v / magnitude);
144
+ }
145
+ async embed(text) {
146
+ return this.generateVector(text);
147
+ }
148
+ async embedBatch(texts) {
149
+ return texts.map((text) => this.generateVector(text));
150
+ }
151
+ /**
152
+ * Get the dimensions of the embeddings.
153
+ * This method is needed for IPC/Unix Socket transport to access the dimensions property.
154
+ */
155
+ async getDimensions() {
156
+ return this.dimensions;
157
+ }
158
+ };
159
+
160
+ // src/noop/adapters/cache.ts
161
+ var MemoryCache = class {
162
+ store = /* @__PURE__ */ new Map();
163
+ sortedSets = /* @__PURE__ */ new Map();
164
+ async get(key) {
165
+ const entry = this.store.get(key);
166
+ if (!entry) {
167
+ return null;
168
+ }
169
+ if (entry.expiresAt !== null && Date.now() > entry.expiresAt) {
170
+ this.store.delete(key);
171
+ return null;
172
+ }
173
+ return entry.value;
174
+ }
175
+ async set(key, value, ttl) {
176
+ const expiresAt = ttl ? Date.now() + ttl : null;
177
+ this.store.set(key, { value, expiresAt });
178
+ }
179
+ async delete(key) {
180
+ this.store.delete(key);
181
+ }
182
+ async clear(pattern) {
183
+ if (!pattern) {
184
+ this.store.clear();
185
+ return;
186
+ }
187
+ const regex = new RegExp("^" + pattern.replace(/\*/g, ".*") + "$");
188
+ for (const key of this.store.keys()) {
189
+ if (regex.test(key)) {
190
+ this.store.delete(key);
191
+ }
192
+ }
193
+ }
194
+ // ═══════════════════════════════════════════════════════════════════════
195
+ // Sorted Set Operations
196
+ // ═══════════════════════════════════════════════════════════════════════
197
+ async zadd(key, score, member) {
198
+ let set = this.sortedSets.get(key);
199
+ if (!set) {
200
+ set = [];
201
+ this.sortedSets.set(key, set);
202
+ }
203
+ const existingIndex = set.findIndex((m) => m.member === member);
204
+ if (existingIndex !== -1) {
205
+ set.splice(existingIndex, 1);
206
+ }
207
+ set.push({ score, member });
208
+ set.sort((a, b) => a.score - b.score);
209
+ }
210
+ async zrangebyscore(key, min, max) {
211
+ const set = this.sortedSets.get(key);
212
+ if (!set) {
213
+ return [];
214
+ }
215
+ return set.filter((m) => m.score >= min && m.score <= max).map((m) => m.member);
216
+ }
217
+ async zrem(key, member) {
218
+ const set = this.sortedSets.get(key);
219
+ if (!set) {
220
+ return;
221
+ }
222
+ const index = set.findIndex((m) => m.member === member);
223
+ if (index !== -1) {
224
+ set.splice(index, 1);
225
+ }
226
+ if (set.length === 0) {
227
+ this.sortedSets.delete(key);
228
+ }
229
+ }
230
+ // ═══════════════════════════════════════════════════════════════════════
231
+ // Atomic Operations
232
+ // ═══════════════════════════════════════════════════════════════════════
233
+ async setIfNotExists(key, value, ttl) {
234
+ if (this.store.has(key)) {
235
+ return false;
236
+ }
237
+ await this.set(key, value, ttl);
238
+ return true;
239
+ }
240
+ /**
241
+ * Get the current number of entries (for testing).
242
+ */
243
+ get size() {
244
+ return this.store.size;
245
+ }
246
+ };
247
+
248
+ // src/noop/adapters/config.ts
249
+ var NoOpConfig = class {
250
+ async getConfig(_productId, _profileId) {
251
+ return void 0;
252
+ }
253
+ async getRawConfig() {
254
+ return void 0;
255
+ }
256
+ };
257
+
258
+ // src/noop/adapters/storage.ts
259
+ var MemoryStorage = class {
260
+ store = /* @__PURE__ */ new Map();
261
+ async read(path) {
262
+ return this.store.get(path) ?? null;
263
+ }
264
+ async write(path, data) {
265
+ this.store.set(path, data);
266
+ }
267
+ async delete(path) {
268
+ this.store.delete(path);
269
+ }
270
+ async list(prefix) {
271
+ const results = [];
272
+ for (const key of this.store.keys()) {
273
+ if (key.startsWith(prefix)) {
274
+ results.push(key);
275
+ }
276
+ }
277
+ return results.sort();
278
+ }
279
+ async exists(path) {
280
+ return this.store.has(path);
281
+ }
282
+ /**
283
+ * Get file metadata.
284
+ * Optional method - implements IStorage.stat().
285
+ */
286
+ async stat(path) {
287
+ const data = this.store.get(path);
288
+ if (!data) {
289
+ return null;
290
+ }
291
+ return {
292
+ path,
293
+ size: data.byteLength,
294
+ lastModified: (/* @__PURE__ */ new Date()).toISOString(),
295
+ contentType: "application/octet-stream"
296
+ };
297
+ }
298
+ /**
299
+ * Copy file.
300
+ * Optional method - implements IStorage.copy().
301
+ */
302
+ async copy(sourcePath, destPath) {
303
+ const data = this.store.get(sourcePath);
304
+ if (!data) {
305
+ throw new Error(`Source file not found: ${sourcePath}`);
306
+ }
307
+ this.store.set(destPath, Buffer.from(data));
308
+ }
309
+ /**
310
+ * Move file.
311
+ * Optional method - implements IStorage.move().
312
+ */
313
+ async move(sourcePath, destPath) {
314
+ const data = this.store.get(sourcePath);
315
+ if (!data) {
316
+ throw new Error(`Source file not found: ${sourcePath}`);
317
+ }
318
+ this.store.set(destPath, data);
319
+ this.store.delete(sourcePath);
320
+ }
321
+ /**
322
+ * List files with metadata.
323
+ * Optional method - implements IStorage.listWithMetadata().
324
+ */
325
+ async listWithMetadata(prefix) {
326
+ const results = [];
327
+ for (const [path, data] of this.store.entries()) {
328
+ if (path.startsWith(prefix)) {
329
+ results.push({
330
+ path,
331
+ size: data.byteLength,
332
+ lastModified: (/* @__PURE__ */ new Date()).toISOString(),
333
+ contentType: "application/octet-stream"
334
+ });
335
+ }
336
+ }
337
+ return results.sort((a, b) => a.path.localeCompare(b.path));
338
+ }
339
+ /**
340
+ * Get the current number of stored files (for testing).
341
+ */
342
+ get size() {
343
+ return this.store.size;
344
+ }
345
+ /**
346
+ * Clear all storage (for testing).
347
+ */
348
+ clear() {
349
+ this.store.clear();
350
+ }
351
+ };
352
+
353
+ // src/noop/adapters/logger.ts
354
+ var ConsoleLogger = class _ConsoleLogger {
355
+ bindings;
356
+ level;
357
+ constructor(bindings = {}, level) {
358
+ this.bindings = bindings;
359
+ this.level = level ?? process.env.KB_LOG_LEVEL ?? "info";
360
+ }
361
+ shouldLog(messageLevel) {
362
+ const levels = {
363
+ silent: 0,
364
+ error: 1,
365
+ warn: 2,
366
+ info: 3,
367
+ debug: 4,
368
+ trace: 5
369
+ };
370
+ const currentLevel = levels[this.level] ?? 3;
371
+ const targetLevel = levels[messageLevel] ?? 3;
372
+ return targetLevel <= currentLevel;
373
+ }
374
+ formatMeta(meta) {
375
+ const combined = { ...this.bindings, ...meta };
376
+ if (Object.keys(combined).length === 0) {
377
+ return "";
378
+ }
379
+ return " " + JSON.stringify(combined);
380
+ }
381
+ info(message, meta) {
382
+ if (this.shouldLog("info")) {
383
+ console.log(`[INFO] ${message}${this.formatMeta(meta)}`);
384
+ }
385
+ }
386
+ warn(message, meta) {
387
+ if (this.shouldLog("warn")) {
388
+ console.warn(`[WARN] ${message}${this.formatMeta(meta)}`);
389
+ }
390
+ }
391
+ error(message, error, meta) {
392
+ if (this.shouldLog("error")) {
393
+ const errorMeta = error ? { ...meta, error: { message: error.message, stack: error.stack } } : meta;
394
+ console.error(`[ERROR] ${message}${this.formatMeta(errorMeta)}`);
395
+ }
396
+ }
397
+ fatal(message, error, meta) {
398
+ if (this.shouldLog("error")) {
399
+ const errorMeta = error ? { ...meta, error: { message: error.message, stack: error.stack } } : meta;
400
+ console.error(`[FATAL] ${message}${this.formatMeta(errorMeta)}`);
401
+ }
402
+ }
403
+ debug(message, meta) {
404
+ if (this.shouldLog("debug")) {
405
+ console.debug(`[DEBUG] ${message}${this.formatMeta(meta)}`);
406
+ }
407
+ }
408
+ trace(message, meta) {
409
+ if (this.shouldLog("trace")) {
410
+ console.debug(`[TRACE] ${message}${this.formatMeta(meta)}`);
411
+ }
412
+ }
413
+ child(bindings) {
414
+ return new _ConsoleLogger({ ...this.bindings, ...bindings }, this.level);
415
+ }
416
+ };
417
+ var NoOpLogger = class {
418
+ info(_message, _meta) {
419
+ }
420
+ warn(_message, _meta) {
421
+ }
422
+ error(_message, _error, _meta) {
423
+ }
424
+ fatal(_message, _error, _meta) {
425
+ }
426
+ debug(_message, _meta) {
427
+ }
428
+ trace(_message, _meta) {
429
+ }
430
+ child(_bindings) {
431
+ return this;
432
+ }
433
+ };
434
+
435
+ // src/noop/adapters/event-bus.ts
436
+ var MemoryEventBus = class {
437
+ handlers = /* @__PURE__ */ new Map();
438
+ async publish(topic, event) {
439
+ const topicHandlers = this.handlers.get(topic);
440
+ if (!topicHandlers) {
441
+ return;
442
+ }
443
+ const promises = Array.from(topicHandlers).map(
444
+ (handler) => handler(event).catch((err) => {
445
+ console.error(`[EventBus] Handler error for topic "${topic}":`, err);
446
+ })
447
+ );
448
+ await Promise.all(promises);
449
+ }
450
+ subscribe(topic, handler) {
451
+ let topicHandlers = this.handlers.get(topic);
452
+ if (!topicHandlers) {
453
+ topicHandlers = /* @__PURE__ */ new Set();
454
+ this.handlers.set(topic, topicHandlers);
455
+ }
456
+ topicHandlers.add(handler);
457
+ return () => {
458
+ topicHandlers.delete(handler);
459
+ if (topicHandlers.size === 0) {
460
+ this.handlers.delete(topic);
461
+ }
462
+ };
463
+ }
464
+ /**
465
+ * Get the number of topics with subscribers (for testing).
466
+ */
467
+ get topicCount() {
468
+ return this.handlers.size;
469
+ }
470
+ /**
471
+ * Get the total number of handlers across all topics (for testing).
472
+ */
473
+ get handlerCount() {
474
+ let count = 0;
475
+ for (const handlers of this.handlers.values()) {
476
+ count += handlers.size;
477
+ }
478
+ return count;
479
+ }
480
+ /**
481
+ * Clear all subscriptions (for testing).
482
+ */
483
+ clear() {
484
+ this.handlers.clear();
485
+ }
486
+ };
487
+ var NoOpEventBus = class {
488
+ async publish(_topic, _event) {
489
+ }
490
+ subscribe(_topic, _handler) {
491
+ return () => {
492
+ };
493
+ }
494
+ };
495
+
496
+ // src/noop/adapters/invoke.ts
497
+ var NoOpInvoke = class {
498
+ async call(_request) {
499
+ return {
500
+ success: false,
501
+ error: "Invoke not configured. Inter-plugin calls are not available."
502
+ };
503
+ }
504
+ async isAvailable(_pluginId, _command) {
505
+ return false;
506
+ }
507
+ };
508
+
509
+ // src/noop/adapters/artifacts.ts
510
+ var MemoryArtifacts = class {
511
+ store = /* @__PURE__ */ new Map();
512
+ async write(key, data, options) {
513
+ const now = /* @__PURE__ */ new Date();
514
+ const meta = {
515
+ key,
516
+ contentType: options?.contentType ?? "application/json",
517
+ size: JSON.stringify(data).length,
518
+ createdAt: this.store.get(key)?.meta.createdAt ?? now,
519
+ updatedAt: now,
520
+ metadata: options?.metadata
521
+ };
522
+ this.store.set(key, { data, meta });
523
+ }
524
+ async read(key) {
525
+ const entry = this.store.get(key);
526
+ return entry ? entry.data : null;
527
+ }
528
+ async exists(key) {
529
+ return this.store.has(key);
530
+ }
531
+ async delete(key) {
532
+ this.store.delete(key);
533
+ }
534
+ async list(prefix) {
535
+ const results = [];
536
+ for (const [key, entry] of this.store) {
537
+ if (key.startsWith(prefix)) {
538
+ results.push(entry.meta);
539
+ }
540
+ }
541
+ return results;
542
+ }
543
+ async getMeta(key) {
544
+ const entry = this.store.get(key);
545
+ return entry?.meta ?? null;
546
+ }
547
+ };
548
+
549
+ // src/noop/adapters/database.ts
550
+ var NoOpSQLDatabase = class {
551
+ async query(_sql, _params) {
552
+ throw new Error("SQL database not configured");
553
+ }
554
+ async transaction() {
555
+ throw new Error("SQL database not configured");
556
+ }
557
+ async close() {
558
+ }
559
+ };
560
+ var NoOpDocumentDatabase = class {
561
+ async find(_collection, _filter, _options) {
562
+ throw new Error("Document database not configured");
563
+ }
564
+ async findById(_collection, _id) {
565
+ throw new Error("Document database not configured");
566
+ }
567
+ async insertOne(_collection, _document) {
568
+ throw new Error("Document database not configured");
569
+ }
570
+ async updateMany(_collection, _filter, _update) {
571
+ throw new Error("Document database not configured");
572
+ }
573
+ async updateById(_collection, _id, _update) {
574
+ throw new Error("Document database not configured");
575
+ }
576
+ async deleteMany(_collection, _filter) {
577
+ throw new Error("Document database not configured");
578
+ }
579
+ async deleteById(_collection, _id) {
580
+ throw new Error("Document database not configured");
581
+ }
582
+ async count(_collection, _filter) {
583
+ throw new Error("Document database not configured");
584
+ }
585
+ async close() {
586
+ }
587
+ };
588
+ var NoOpKVDatabase = class {
589
+ async get(_key) {
590
+ throw new Error("Key-value database not configured");
591
+ }
592
+ async set(_key, _value, _ttlMs) {
593
+ throw new Error("Key-value database not configured");
594
+ }
595
+ async delete(_key) {
596
+ throw new Error("Key-value database not configured");
597
+ }
598
+ async exists(_key) {
599
+ throw new Error("Key-value database not configured");
600
+ }
601
+ async keys(_pattern) {
602
+ throw new Error("Key-value database not configured");
603
+ }
604
+ async close() {
605
+ }
606
+ };
607
+ var NoOpTimeSeriesDatabase = class {
608
+ async write(_metric, _point) {
609
+ throw new Error("Time-series database not configured");
610
+ }
611
+ async writeBatch(_metric, _points) {
612
+ throw new Error("Time-series database not configured");
613
+ }
614
+ async query(_metric, _startTime, _endTime, _tags) {
615
+ throw new Error("Time-series database not configured");
616
+ }
617
+ async close() {
618
+ }
619
+ };
620
+ var NoOpDatabaseProvider = class {
621
+ async getSQLDatabase(_name) {
622
+ return new NoOpSQLDatabase();
623
+ }
624
+ async getDocumentDatabase(_name) {
625
+ return new NoOpDocumentDatabase();
626
+ }
627
+ async getKeyValueDatabase(_name) {
628
+ return new NoOpKVDatabase();
629
+ }
630
+ async getTimeSeriesDatabase(_name) {
631
+ return new NoOpTimeSeriesDatabase();
632
+ }
633
+ async close() {
634
+ }
635
+ };
636
+
637
+ exports.ConsoleLogger = ConsoleLogger;
638
+ exports.MemoryArtifacts = MemoryArtifacts;
639
+ exports.MemoryCache = MemoryCache;
640
+ exports.MemoryEventBus = MemoryEventBus;
641
+ exports.MemoryStorage = MemoryStorage;
642
+ exports.MemoryVectorStore = MemoryVectorStore;
643
+ exports.MockEmbeddings = MockEmbeddings;
644
+ exports.MockLLM = MockLLM;
645
+ exports.NoOpAnalytics = NoOpAnalytics;
646
+ exports.NoOpConfig = NoOpConfig;
647
+ exports.NoOpDatabaseProvider = NoOpDatabaseProvider;
648
+ exports.NoOpDocumentDatabase = NoOpDocumentDatabase;
649
+ exports.NoOpEventBus = NoOpEventBus;
650
+ exports.NoOpInvoke = NoOpInvoke;
651
+ exports.NoOpKVDatabase = NoOpKVDatabase;
652
+ exports.NoOpLogger = NoOpLogger;
653
+ exports.NoOpSQLDatabase = NoOpSQLDatabase;
654
+ exports.NoOpTimeSeriesDatabase = NoOpTimeSeriesDatabase;
655
+ //# sourceMappingURL=index.cjs.map
656
+ //# sourceMappingURL=index.cjs.map