@qwickapps/qwickbrain-proxy 1.0.2 → 1.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 (73) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/db/schema.d.ts +63 -6
  3. package/dist/db/schema.d.ts.map +1 -1
  4. package/dist/db/schema.js +17 -2
  5. package/dist/db/schema.js.map +1 -1
  6. package/dist/lib/__tests__/cache-manager.test.js +146 -83
  7. package/dist/lib/__tests__/cache-manager.test.js.map +1 -1
  8. package/dist/lib/__tests__/connection-manager.test.js +2 -2
  9. package/dist/lib/__tests__/connection-manager.test.js.map +1 -1
  10. package/dist/lib/__tests__/proxy-server.test.js +16 -44
  11. package/dist/lib/__tests__/proxy-server.test.js.map +1 -1
  12. package/dist/lib/__tests__/qwickbrain-client.test.js +3 -1
  13. package/dist/lib/__tests__/qwickbrain-client.test.js.map +1 -1
  14. package/dist/lib/__tests__/sse-invalidation-listener.test.d.ts +2 -0
  15. package/dist/lib/__tests__/sse-invalidation-listener.test.d.ts.map +1 -0
  16. package/dist/lib/__tests__/sse-invalidation-listener.test.js +245 -0
  17. package/dist/lib/__tests__/sse-invalidation-listener.test.js.map +1 -0
  18. package/dist/lib/__tests__/write-queue-manager.test.d.ts +2 -0
  19. package/dist/lib/__tests__/write-queue-manager.test.d.ts.map +1 -0
  20. package/dist/lib/__tests__/write-queue-manager.test.js +291 -0
  21. package/dist/lib/__tests__/write-queue-manager.test.js.map +1 -0
  22. package/dist/lib/cache-manager.d.ts +35 -6
  23. package/dist/lib/cache-manager.d.ts.map +1 -1
  24. package/dist/lib/cache-manager.js +154 -41
  25. package/dist/lib/cache-manager.js.map +1 -1
  26. package/dist/lib/connection-manager.d.ts +7 -0
  27. package/dist/lib/connection-manager.d.ts.map +1 -1
  28. package/dist/lib/connection-manager.js +57 -8
  29. package/dist/lib/connection-manager.js.map +1 -1
  30. package/dist/lib/proxy-server.d.ts +12 -0
  31. package/dist/lib/proxy-server.d.ts.map +1 -1
  32. package/dist/lib/proxy-server.js +184 -87
  33. package/dist/lib/proxy-server.js.map +1 -1
  34. package/dist/lib/qwickbrain-client.d.ts +4 -0
  35. package/dist/lib/qwickbrain-client.d.ts.map +1 -1
  36. package/dist/lib/qwickbrain-client.js +152 -13
  37. package/dist/lib/qwickbrain-client.js.map +1 -1
  38. package/dist/lib/sse-invalidation-listener.d.ts +31 -0
  39. package/dist/lib/sse-invalidation-listener.d.ts.map +1 -0
  40. package/dist/lib/sse-invalidation-listener.js +151 -0
  41. package/dist/lib/sse-invalidation-listener.js.map +1 -0
  42. package/dist/lib/tools.d.ts +21 -0
  43. package/dist/lib/tools.d.ts.map +1 -0
  44. package/dist/lib/tools.js +513 -0
  45. package/dist/lib/tools.js.map +1 -0
  46. package/dist/lib/write-queue-manager.d.ts +88 -0
  47. package/dist/lib/write-queue-manager.d.ts.map +1 -0
  48. package/dist/lib/write-queue-manager.js +191 -0
  49. package/dist/lib/write-queue-manager.js.map +1 -0
  50. package/dist/types/config.d.ts +7 -42
  51. package/dist/types/config.d.ts.map +1 -1
  52. package/dist/types/config.js +1 -6
  53. package/dist/types/config.js.map +1 -1
  54. package/drizzle/0002_lru_cache_migration.sql +94 -0
  55. package/drizzle/meta/_journal.json +7 -0
  56. package/package.json +6 -2
  57. package/scripts/rebuild-sqlite.sh +26 -0
  58. package/src/db/schema.ts +17 -2
  59. package/src/lib/__tests__/cache-manager.test.ts +180 -90
  60. package/src/lib/__tests__/connection-manager.test.ts +2 -2
  61. package/src/lib/__tests__/proxy-server.test.ts +16 -51
  62. package/src/lib/__tests__/qwickbrain-client.test.ts +3 -1
  63. package/src/lib/__tests__/sse-invalidation-listener.test.ts +326 -0
  64. package/src/lib/__tests__/write-queue-manager.test.ts +383 -0
  65. package/src/lib/cache-manager.ts +198 -46
  66. package/src/lib/connection-manager.ts +67 -8
  67. package/src/lib/proxy-server.ts +231 -90
  68. package/src/lib/qwickbrain-client.ts +166 -12
  69. package/src/lib/sse-invalidation-listener.ts +185 -0
  70. package/src/lib/tools.ts +525 -0
  71. package/src/lib/write-queue-manager.ts +271 -0
  72. package/src/types/config.ts +1 -6
  73. package/.github/workflows/publish.yml +0 -92
package/CHANGELOG.md CHANGED
@@ -5,6 +5,23 @@ All notable changes to the QwickBrain MCP Proxy will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.0.3] - 2026-01-09
9
+
10
+ ### Fixed
11
+
12
+ - **SSE Connection Initialization**: Health check now initializes SSE connection on first attempt
13
+ - Fixed issue where client remained null preventing connection establishment
14
+ - Connection now established during first health check if not already connected
15
+ - Enables dynamic tool forwarding from QwickBrain Python server
16
+
17
+ ### Added
18
+
19
+ - **Automated Native Module Rebuild**: Created rebuild script for better-sqlite3
20
+ - Added scripts/rebuild-sqlite.sh to automate native module compilation
21
+ - Added postinstall hook to rebuild better-sqlite3 after installation
22
+ - Handles Python 3.13+ distutils removal by installing setuptools
23
+ - Prevents deployment issues with missing native bindings
24
+
8
25
  ## [1.0.2] - 2026-01-08
9
26
 
10
27
  ### Fixed
@@ -1,5 +1,9 @@
1
1
  /**
2
2
  * Cached documents (workflows, rules, FRDs, designs, etc.)
3
+ *
4
+ * Two-tier storage:
5
+ * - Critical tier (isCritical=true): workflows, rules, agents, templates - never evicted, not counted toward limit
6
+ * - Dynamic tier (isCritical=false): other documents - LRU eviction when storage limit reached
3
7
  */
4
8
  export declare const documents: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
5
9
  name: "documents";
@@ -124,15 +128,49 @@ export declare const documents: import("drizzle-orm/sqlite-core").SQLiteTableWit
124
128
  identity: undefined;
125
129
  generated: undefined;
126
130
  }, object>;
127
- expiresAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
128
- name: "expires_at";
131
+ lastAccessedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
132
+ name: "last_accessed_at";
129
133
  tableName: "documents";
130
134
  dataType: "date";
131
135
  columnType: "SQLiteTimestamp";
132
136
  data: Date;
133
137
  driverParam: number;
134
138
  notNull: true;
135
- hasDefault: false;
139
+ hasDefault: true;
140
+ isPrimaryKey: false;
141
+ isAutoincrement: false;
142
+ hasRuntimeDefault: false;
143
+ enumValues: undefined;
144
+ baseColumn: never;
145
+ identity: undefined;
146
+ generated: undefined;
147
+ }, object>;
148
+ isCritical: import("drizzle-orm/sqlite-core").SQLiteColumn<{
149
+ name: "is_critical";
150
+ tableName: "documents";
151
+ dataType: "boolean";
152
+ columnType: "SQLiteBoolean";
153
+ data: boolean;
154
+ driverParam: number;
155
+ notNull: true;
156
+ hasDefault: true;
157
+ isPrimaryKey: false;
158
+ isAutoincrement: false;
159
+ hasRuntimeDefault: false;
160
+ enumValues: undefined;
161
+ baseColumn: never;
162
+ identity: undefined;
163
+ generated: undefined;
164
+ }, object>;
165
+ sizeBytes: import("drizzle-orm/sqlite-core").SQLiteColumn<{
166
+ name: "size_bytes";
167
+ tableName: "documents";
168
+ dataType: "number";
169
+ columnType: "SQLiteInteger";
170
+ data: number;
171
+ driverParam: number;
172
+ notNull: true;
173
+ hasDefault: true;
136
174
  isPrimaryKey: false;
137
175
  isAutoincrement: false;
138
176
  hasRuntimeDefault: false;
@@ -163,6 +201,8 @@ export declare const documents: import("drizzle-orm/sqlite-core").SQLiteTableWit
163
201
  }>;
164
202
  /**
165
203
  * Cached memories (project context, patterns, decisions)
204
+ *
205
+ * Memories are always dynamic tier - LRU eviction applies
166
206
  */
167
207
  export declare const memories: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
168
208
  name: "memories";
@@ -270,15 +310,32 @@ export declare const memories: import("drizzle-orm/sqlite-core").SQLiteTableWith
270
310
  identity: undefined;
271
311
  generated: undefined;
272
312
  }, object>;
273
- expiresAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
274
- name: "expires_at";
313
+ lastAccessedAt: import("drizzle-orm/sqlite-core").SQLiteColumn<{
314
+ name: "last_accessed_at";
275
315
  tableName: "memories";
276
316
  dataType: "date";
277
317
  columnType: "SQLiteTimestamp";
278
318
  data: Date;
279
319
  driverParam: number;
280
320
  notNull: true;
281
- hasDefault: false;
321
+ hasDefault: true;
322
+ isPrimaryKey: false;
323
+ isAutoincrement: false;
324
+ hasRuntimeDefault: false;
325
+ enumValues: undefined;
326
+ baseColumn: never;
327
+ identity: undefined;
328
+ generated: undefined;
329
+ }, object>;
330
+ sizeBytes: import("drizzle-orm/sqlite-core").SQLiteColumn<{
331
+ name: "size_bytes";
332
+ tableName: "memories";
333
+ dataType: "number";
334
+ columnType: "SQLiteInteger";
335
+ data: number;
336
+ driverParam: number;
337
+ notNull: true;
338
+ hasDefault: true;
282
339
  isPrimaryKey: false;
283
340
  isAutoincrement: false;
284
341
  hasRuntimeDefault: false;
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAcnB,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAalB,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQxB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBnB,CAAC;AAEJ;;;;GAIG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBlB,CAAC;AAEJ;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQxB,CAAC"}
package/dist/db/schema.js CHANGED
@@ -2,6 +2,10 @@ import { sql } from 'drizzle-orm';
2
2
  import { integer, sqliteTable, text, unique } from 'drizzle-orm/sqlite-core';
3
3
  /**
4
4
  * Cached documents (workflows, rules, FRDs, designs, etc.)
5
+ *
6
+ * Two-tier storage:
7
+ * - Critical tier (isCritical=true): workflows, rules, agents, templates - never evicted, not counted toward limit
8
+ * - Dynamic tier (isCritical=false): other documents - LRU eviction when storage limit reached
5
9
  */
6
10
  export const documents = sqliteTable('documents', {
7
11
  id: integer('id').primaryKey({ autoIncrement: true }),
@@ -13,13 +17,21 @@ export const documents = sqliteTable('documents', {
13
17
  cachedAt: integer('cached_at', { mode: 'timestamp' })
14
18
  .notNull()
15
19
  .default(sql `(unixepoch())`),
16
- expiresAt: integer('expires_at', { mode: 'timestamp' }).notNull(),
20
+ lastAccessedAt: integer('last_accessed_at', { mode: 'timestamp' })
21
+ .notNull()
22
+ .default(sql `(unixepoch())`),
23
+ isCritical: integer('is_critical', { mode: 'boolean' })
24
+ .notNull()
25
+ .default(false),
26
+ sizeBytes: integer('size_bytes').notNull().default(0),
17
27
  synced: integer('synced', { mode: 'boolean' }).notNull().default(true),
18
28
  }, (table) => ({
19
29
  uniqueDocument: unique().on(table.docType, table.name, table.project),
20
30
  }));
21
31
  /**
22
32
  * Cached memories (project context, patterns, decisions)
33
+ *
34
+ * Memories are always dynamic tier - LRU eviction applies
23
35
  */
24
36
  export const memories = sqliteTable('memories', {
25
37
  id: integer('id').primaryKey({ autoIncrement: true }),
@@ -30,7 +42,10 @@ export const memories = sqliteTable('memories', {
30
42
  cachedAt: integer('cached_at', { mode: 'timestamp' })
31
43
  .notNull()
32
44
  .default(sql `(unixepoch())`),
33
- expiresAt: integer('expires_at', { mode: 'timestamp' }).notNull(),
45
+ lastAccessedAt: integer('last_accessed_at', { mode: 'timestamp' })
46
+ .notNull()
47
+ .default(sql `(unixepoch())`),
48
+ sizeBytes: integer('size_bytes').notNull().default(0),
34
49
  synced: integer('synced', { mode: 'boolean' }).notNull().default(true),
35
50
  }, (table) => ({
36
51
  uniqueMemory: unique().on(table.name, table.project),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { join } from 'path';
4
4
  import { tmpdir } from 'os';
5
5
  import { createDatabase, runMigrations } from '../../db/client.js';
6
6
  import { CacheManager } from '../cache-manager.js';
7
- describe('CacheManager', () => {
7
+ describe('CacheManager - LRU Two-Tier Storage', () => {
8
8
  let tmpDir;
9
9
  let cacheManager;
10
10
  let db;
@@ -17,12 +17,7 @@ describe('CacheManager', () => {
17
17
  runMigrations(db);
18
18
  const config = {
19
19
  dir: tmpDir,
20
- ttl: {
21
- workflows: 3600,
22
- rules: 3600,
23
- documents: 1800,
24
- memories: 900,
25
- },
20
+ maxCacheSizeBytes: 10 * 1024, // 10KB limit for testing
26
21
  preload: [],
27
22
  };
28
23
  cacheManager = new CacheManager(db, config);
@@ -39,7 +34,7 @@ describe('CacheManager', () => {
39
34
  expect(cached?.data.content).toBe('content here');
40
35
  expect(cached?.data.doc_type).toBe('workflow');
41
36
  expect(cached?.data.name).toBe('test-workflow');
42
- expect(cached?.isExpired).toBe(false);
37
+ expect(cached?.age).toBeGreaterThanOrEqual(0);
43
38
  });
44
39
  it('should store document with metadata', async () => {
45
40
  const metadata = { author: 'test', version: 1 };
@@ -73,25 +68,30 @@ describe('CacheManager', () => {
73
68
  const cached = await cacheManager.getDocument('workflow', 'test');
74
69
  expect(cached?.data.content).toBe('version 2');
75
70
  });
76
- it('should mark document as expired after TTL', async () => {
77
- // Override config to have very short TTL for testing
78
- const shortTTLConfig = {
79
- dir: tmpDir,
80
- ttl: {
81
- workflows: 0, // Expire immediately
82
- rules: 0,
83
- documents: 0,
84
- memories: 0,
85
- },
86
- preload: [],
87
- };
88
- const shortCacheManager = new CacheManager(db, shortTTLConfig);
89
- await shortCacheManager.setDocument('workflow', 'test', 'content');
90
- // Wait to ensure timestamp difference
91
- await new Promise(resolve => setTimeout(resolve, 100));
92
- const cached = await shortCacheManager.getDocument('workflow', 'test');
93
- expect(cached).not.toBeNull();
94
- expect(cached?.isExpired).toBe(true);
71
+ it('should mark critical document types as critical', async () => {
72
+ // Critical types: workflow, rule, agent, template
73
+ await cacheManager.setDocument('workflow', 'test-workflow', 'content');
74
+ await cacheManager.setDocument('rule', 'test-rule', 'content');
75
+ await cacheManager.setDocument('agent', 'test-agent', 'content');
76
+ await cacheManager.setDocument('template', 'test-template', 'content');
77
+ // Non-critical type
78
+ await cacheManager.setDocument('frd', 'test-frd', 'content');
79
+ const stats = await cacheManager.getCacheStats();
80
+ expect(stats.criticalCount).toBe(4);
81
+ expect(stats.dynamicCount).toBeGreaterThan(0); // FRD is dynamic
82
+ });
83
+ it('should update lastAccessedAt on read', async () => {
84
+ await cacheManager.setDocument('workflow', 'test', 'content');
85
+ const cached1 = await cacheManager.getDocument('workflow', 'test');
86
+ const cachedAt1 = cached1?.cachedAt.getTime();
87
+ // Wait 200ms
88
+ await new Promise(resolve => setTimeout(resolve, 200));
89
+ const cached2 = await cacheManager.getDocument('workflow', 'test');
90
+ const cachedAt2 = cached2?.cachedAt.getTime();
91
+ // cachedAt should remain the same (shows when first cached)
92
+ expect(cachedAt2).toBe(cachedAt1);
93
+ // But age should increase over time
94
+ expect(cached2?.age).toBeGreaterThanOrEqual(0);
95
95
  });
96
96
  });
97
97
  describe('setMemory and getMemory', () => {
@@ -101,7 +101,6 @@ describe('CacheManager', () => {
101
101
  expect(cached).not.toBeNull();
102
102
  expect(cached?.data.content).toBe('memory content');
103
103
  expect(cached?.data.name).toBe('test-memory');
104
- expect(cached?.isExpired).toBe(false);
105
104
  });
106
105
  it('should store memory with metadata', async () => {
107
106
  const metadata = { lastUpdated: Date.now() };
@@ -127,65 +126,129 @@ describe('CacheManager', () => {
127
126
  const cached = await cacheManager.getMemory('non-existent');
128
127
  expect(cached).toBeNull();
129
128
  });
130
- it('should mark memory as expired after TTL', async () => {
131
- const shortTTLConfig = {
132
- dir: tmpDir,
133
- ttl: {
134
- workflows: 0,
135
- rules: 0,
136
- documents: 0,
137
- memories: 0,
138
- },
139
- preload: [],
140
- };
141
- const shortCacheManager = new CacheManager(db, shortTTLConfig);
142
- await shortCacheManager.setMemory('test', 'content');
143
- await new Promise(resolve => setTimeout(resolve, 100));
144
- const cached = await shortCacheManager.getMemory('test');
145
- expect(cached).not.toBeNull();
146
- expect(cached?.isExpired).toBe(true);
147
- });
148
129
  });
149
- describe('cleanupExpiredEntries', () => {
150
- it('should delete expired documents and memories', async () => {
151
- const shortTTLConfig = {
152
- dir: tmpDir,
153
- ttl: {
154
- workflows: 0,
155
- rules: 0,
156
- documents: 0,
157
- memories: 0,
158
- },
159
- preload: [],
160
- };
161
- const shortCacheManager = new CacheManager(db, shortTTLConfig);
162
- // Add some items that will immediately expire
163
- await shortCacheManager.setDocument('workflow', 'test1', 'content1');
164
- await shortCacheManager.setDocument('rule', 'test2', 'content2');
165
- await shortCacheManager.setMemory('memory1', 'content3');
166
- // Wait to ensure they're expired (need sufficient time for clock to advance)
167
- await new Promise(resolve => setTimeout(resolve, 100));
168
- // Clean up
169
- const result = await shortCacheManager.cleanupExpiredEntries();
170
- expect(result.documentsDeleted).toBe(2);
171
- expect(result.memoriesDeleted).toBe(1);
172
- // Verify they're gone
173
- const doc1 = await shortCacheManager.getDocument('workflow', 'test1');
174
- const mem1 = await shortCacheManager.getMemory('memory1');
130
+ describe('LRU Eviction - Two-Tier Storage', () => {
131
+ it('should NOT evict critical documents when storage limit reached', async () => {
132
+ // Create large critical documents (workflows)
133
+ const largeContent = 'x'.repeat(3000); // 3KB each
134
+ // Add 4 critical documents = 12KB (exceeds 10KB limit)
135
+ await cacheManager.setDocument('workflow', 'critical1', largeContent);
136
+ await cacheManager.setDocument('workflow', 'critical2', largeContent);
137
+ await cacheManager.setDocument('workflow', 'critical3', largeContent);
138
+ await cacheManager.setDocument('workflow', 'critical4', largeContent);
139
+ // All should still be present (critical tier bypasses limit)
140
+ const doc1 = await cacheManager.getDocument('workflow', 'critical1');
141
+ const doc2 = await cacheManager.getDocument('workflow', 'critical2');
142
+ const doc3 = await cacheManager.getDocument('workflow', 'critical3');
143
+ const doc4 = await cacheManager.getDocument('workflow', 'critical4');
144
+ expect(doc1).not.toBeNull();
145
+ expect(doc2).not.toBeNull();
146
+ expect(doc3).not.toBeNull();
147
+ expect(doc4).not.toBeNull();
148
+ });
149
+ it('should evict oldest dynamic documents when storage limit reached', async () => {
150
+ const largeContent = 'x'.repeat(3000); // 3KB each
151
+ // Add dynamic documents
152
+ await cacheManager.setDocument('frd', 'dynamic1', largeContent);
153
+ await new Promise(resolve => setTimeout(resolve, 10));
154
+ await cacheManager.setDocument('frd', 'dynamic2', largeContent);
155
+ await new Promise(resolve => setTimeout(resolve, 10));
156
+ await cacheManager.setDocument('frd', 'dynamic3', largeContent);
157
+ await new Promise(resolve => setTimeout(resolve, 10));
158
+ // Now add another that pushes us over limit (9KB current, 3KB new = 12KB > 10KB)
159
+ // Should evict dynamic1 (oldest)
160
+ await cacheManager.setDocument('frd', 'dynamic4', largeContent);
161
+ // dynamic1 should be evicted
162
+ const doc1 = await cacheManager.getDocument('frd', 'dynamic1');
175
163
  expect(doc1).toBeNull();
176
- expect(mem1).toBeNull();
164
+ // dynamic2, dynamic3, dynamic4 should remain
165
+ const doc2 = await cacheManager.getDocument('frd', 'dynamic2');
166
+ const doc3 = await cacheManager.getDocument('frd', 'dynamic3');
167
+ const doc4 = await cacheManager.getDocument('frd', 'dynamic4');
168
+ expect(doc2).not.toBeNull();
169
+ expect(doc3).not.toBeNull();
170
+ expect(doc4).not.toBeNull();
171
+ });
172
+ it('should use LRU ordering based on lastAccessedAt', async () => {
173
+ const largeContent = 'x'.repeat(3000); // 3KB each
174
+ // Add 3 dynamic documents with delays to ensure distinct timestamps
175
+ await cacheManager.setDocument('frd', 'doc1', largeContent);
176
+ await new Promise(resolve => setTimeout(resolve, 50));
177
+ await cacheManager.setDocument('frd', 'doc2', largeContent);
178
+ await new Promise(resolve => setTimeout(resolve, 50));
179
+ await cacheManager.setDocument('frd', 'doc3', largeContent);
180
+ await new Promise(resolve => setTimeout(resolve, 50));
181
+ // Access doc2 and doc3 (updates their lastAccessedAt to be newest)
182
+ await cacheManager.getDocument('frd', 'doc2');
183
+ await new Promise(resolve => setTimeout(resolve, 50));
184
+ await cacheManager.getDocument('frd', 'doc3');
185
+ await new Promise(resolve => setTimeout(resolve, 50));
186
+ // Now doc1 has oldest lastAccessedAt, should be evicted first
187
+ // Add doc4, should evict doc1 (oldest access)
188
+ await cacheManager.setDocument('frd', 'doc4', largeContent);
189
+ const doc1 = await cacheManager.getDocument('frd', 'doc1');
190
+ const doc2 = await cacheManager.getDocument('frd', 'doc2');
191
+ const doc3 = await cacheManager.getDocument('frd', 'doc3');
192
+ const doc4 = await cacheManager.getDocument('frd', 'doc4');
193
+ expect(doc1).toBeNull(); // Oldest access, evicted
194
+ expect(doc2).not.toBeNull(); // Accessed recently, kept
195
+ expect(doc3).not.toBeNull(); // Accessed recently, kept
196
+ expect(doc4).not.toBeNull(); // Just added
197
+ });
198
+ it('should evict memories when document eviction insufficient', async () => {
199
+ const largeContent = 'x'.repeat(3000); // 3KB each
200
+ // Add one dynamic document
201
+ await cacheManager.setDocument('frd', 'doc1', largeContent);
202
+ // Add memories
203
+ await cacheManager.setMemory('mem1', largeContent);
204
+ await cacheManager.setMemory('mem2', largeContent);
205
+ // Current: 9KB (over limit when we add another 3KB)
206
+ // Should evict doc1 and mem1 to make room
207
+ await cacheManager.setDocument('frd', 'doc2', largeContent);
208
+ const doc1 = await cacheManager.getDocument('frd', 'doc1');
209
+ const mem1 = await cacheManager.getMemory('mem1');
210
+ const mem2 = await cacheManager.getMemory('mem2');
211
+ // At least one should be evicted (LRU order)
212
+ const evictedCount = [doc1, mem1, mem2].filter(item => item === null).length;
213
+ expect(evictedCount).toBeGreaterThan(0);
177
214
  });
178
- it('should not delete non-expired items', async () => {
215
+ });
216
+ describe('Cache invalidation', () => {
217
+ it('should invalidate specific document', async () => {
179
218
  await cacheManager.setDocument('workflow', 'test', 'content');
180
- await cacheManager.setMemory('memory', 'content');
181
- const result = await cacheManager.cleanupExpiredEntries();
182
- expect(result.documentsDeleted).toBe(0);
183
- expect(result.memoriesDeleted).toBe(0);
184
- // Verify they're still there
185
- const doc = await cacheManager.getDocument('workflow', 'test');
186
- const mem = await cacheManager.getMemory('memory');
187
- expect(doc).not.toBeNull();
188
- expect(mem).not.toBeNull();
219
+ const cached1 = await cacheManager.getDocument('workflow', 'test');
220
+ expect(cached1).not.toBeNull();
221
+ await cacheManager.invalidateDocument('workflow', 'test');
222
+ const cached2 = await cacheManager.getDocument('workflow', 'test');
223
+ expect(cached2).toBeNull();
224
+ });
225
+ it('should invalidate specific memory', async () => {
226
+ await cacheManager.setMemory('test', 'content');
227
+ const cached1 = await cacheManager.getMemory('test');
228
+ expect(cached1).not.toBeNull();
229
+ await cacheManager.invalidateMemory('test');
230
+ const cached2 = await cacheManager.getMemory('test');
231
+ expect(cached2).toBeNull();
232
+ });
233
+ });
234
+ describe('Cache statistics', () => {
235
+ it('should return accurate cache statistics', async () => {
236
+ const content = 'x'.repeat(1000); // 1KB each
237
+ // Add critical documents
238
+ await cacheManager.setDocument('workflow', 'wf1', content);
239
+ await cacheManager.setDocument('rule', 'rule1', content);
240
+ // Add dynamic documents
241
+ await cacheManager.setDocument('frd', 'frd1', content);
242
+ // Add memories
243
+ await cacheManager.setMemory('mem1', content);
244
+ const stats = await cacheManager.getCacheStats();
245
+ expect(stats.criticalCount).toBe(2);
246
+ expect(stats.dynamicCount).toBeGreaterThan(0);
247
+ expect(stats.memoryCount).toBe(1);
248
+ expect(stats.criticalSize).toBeGreaterThan(0);
249
+ expect(stats.dynamicSize).toBeGreaterThan(0);
250
+ expect(stats.totalSize).toBe(stats.criticalSize + stats.dynamicSize);
251
+ expect(stats.totalCount).toBe(stats.criticalCount + stats.dynamicCount);
189
252
  });
190
253
  });
191
254
  describe('cache age calculation', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"cache-manager.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/cache-manager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache-manager.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/cache-manager.test.ts"],"names":[],"mappings":"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"}
@@ -114,10 +114,10 @@ describe('ConnectionManager', () => {
114
114
  expect(delays[i]).toBeGreaterThan(delays[i - 1]);
115
115
  }
116
116
  });
117
- it('should emit maxReconnectAttemptsReached after max attempts', async () => {
117
+ it('should emit dormant after max attempts', async () => {
118
118
  mockClient.healthCheck = vi.fn().mockRejectedValue(new Error('Failed'));
119
119
  const maxAttemptsListener = vi.fn();
120
- connectionManager.on('maxReconnectAttemptsReached', maxAttemptsListener);
120
+ connectionManager.on('dormant', maxAttemptsListener);
121
121
  await connectionManager.start();
122
122
  // Wait for all reconnect attempts
123
123
  await new Promise(resolve => setTimeout(resolve, 2000));
@@ -1 +1 @@
1
- {"version":3,"file":"connection-manager.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/connection-manager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection-manager.test.js","sourceRoot":"","sources":["../../../src/lib/__tests__/connection-manager.test.ts"],"names":[],"mappings":"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"}