agentic-qe 2.8.1 → 2.8.2

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 (97) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +1 -1
  3. package/dist/agents/BaseAgent.d.ts +201 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +401 -0
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.d.ts +135 -0
  8. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.d.ts.map +1 -0
  9. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.js +301 -0
  10. package/dist/code-intelligence/embeddings/EmbeddingCacheFactory.js.map +1 -0
  11. package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts +78 -6
  12. package/dist/code-intelligence/embeddings/NomicEmbedder.d.ts.map +1 -1
  13. package/dist/code-intelligence/embeddings/NomicEmbedder.js +162 -21
  14. package/dist/code-intelligence/embeddings/NomicEmbedder.js.map +1 -1
  15. package/dist/code-intelligence/embeddings/backends/MemoryBackend.d.ts +59 -0
  16. package/dist/code-intelligence/embeddings/backends/MemoryBackend.d.ts.map +1 -0
  17. package/dist/code-intelligence/embeddings/backends/MemoryBackend.js +173 -0
  18. package/dist/code-intelligence/embeddings/backends/MemoryBackend.js.map +1 -0
  19. package/dist/code-intelligence/embeddings/backends/RedisBackend.d.ts +50 -0
  20. package/dist/code-intelligence/embeddings/backends/RedisBackend.d.ts.map +1 -0
  21. package/dist/code-intelligence/embeddings/backends/RedisBackend.js +279 -0
  22. package/dist/code-intelligence/embeddings/backends/RedisBackend.js.map +1 -0
  23. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.d.ts +64 -0
  24. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.d.ts.map +1 -0
  25. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.js +314 -0
  26. package/dist/code-intelligence/embeddings/backends/SQLiteBackend.js.map +1 -0
  27. package/dist/code-intelligence/embeddings/backends/index.d.ts +16 -0
  28. package/dist/code-intelligence/embeddings/backends/index.d.ts.map +1 -0
  29. package/dist/code-intelligence/embeddings/backends/index.js +28 -0
  30. package/dist/code-intelligence/embeddings/backends/index.js.map +1 -0
  31. package/dist/code-intelligence/embeddings/backends/types.d.ts +177 -0
  32. package/dist/code-intelligence/embeddings/backends/types.d.ts.map +1 -0
  33. package/dist/code-intelligence/embeddings/backends/types.js +30 -0
  34. package/dist/code-intelligence/embeddings/backends/types.js.map +1 -0
  35. package/dist/code-intelligence/embeddings/index.d.ts +7 -0
  36. package/dist/code-intelligence/embeddings/index.d.ts.map +1 -1
  37. package/dist/code-intelligence/embeddings/index.js +16 -1
  38. package/dist/code-intelligence/embeddings/index.js.map +1 -1
  39. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  40. package/dist/infrastructure/index.d.ts +15 -0
  41. package/dist/infrastructure/index.d.ts.map +1 -0
  42. package/dist/infrastructure/index.js +44 -0
  43. package/dist/infrastructure/index.js.map +1 -0
  44. package/dist/infrastructure/network/AgentRateLimiter.d.ts +59 -0
  45. package/dist/infrastructure/network/AgentRateLimiter.d.ts.map +1 -0
  46. package/dist/infrastructure/network/AgentRateLimiter.js +186 -0
  47. package/dist/infrastructure/network/AgentRateLimiter.js.map +1 -0
  48. package/dist/infrastructure/network/AuditLogger.d.ts +102 -0
  49. package/dist/infrastructure/network/AuditLogger.d.ts.map +1 -0
  50. package/dist/infrastructure/network/AuditLogger.js +284 -0
  51. package/dist/infrastructure/network/AuditLogger.js.map +1 -0
  52. package/dist/infrastructure/network/DomainWhitelist.d.ts +111 -0
  53. package/dist/infrastructure/network/DomainWhitelist.d.ts.map +1 -0
  54. package/dist/infrastructure/network/DomainWhitelist.js +216 -0
  55. package/dist/infrastructure/network/DomainWhitelist.js.map +1 -0
  56. package/dist/infrastructure/network/NetworkPolicyManager.d.ts +97 -0
  57. package/dist/infrastructure/network/NetworkPolicyManager.d.ts.map +1 -0
  58. package/dist/infrastructure/network/NetworkPolicyManager.js +309 -0
  59. package/dist/infrastructure/network/NetworkPolicyManager.js.map +1 -0
  60. package/dist/infrastructure/network/index.d.ts +19 -0
  61. package/dist/infrastructure/network/index.d.ts.map +1 -0
  62. package/dist/infrastructure/network/index.js +46 -0
  63. package/dist/infrastructure/network/index.js.map +1 -0
  64. package/dist/infrastructure/network/policies/default-policies.d.ts +78 -0
  65. package/dist/infrastructure/network/policies/default-policies.d.ts.map +1 -0
  66. package/dist/infrastructure/network/policies/default-policies.js +312 -0
  67. package/dist/infrastructure/network/policies/default-policies.js.map +1 -0
  68. package/dist/infrastructure/network/types.d.ts +214 -0
  69. package/dist/infrastructure/network/types.d.ts.map +1 -0
  70. package/dist/infrastructure/network/types.js +25 -0
  71. package/dist/infrastructure/network/types.js.map +1 -0
  72. package/dist/infrastructure/sandbox/ResourceMonitor.d.ts +124 -0
  73. package/dist/infrastructure/sandbox/ResourceMonitor.d.ts.map +1 -0
  74. package/dist/infrastructure/sandbox/ResourceMonitor.js +305 -0
  75. package/dist/infrastructure/sandbox/ResourceMonitor.js.map +1 -0
  76. package/dist/infrastructure/sandbox/SandboxManager.d.ts +122 -0
  77. package/dist/infrastructure/sandbox/SandboxManager.d.ts.map +1 -0
  78. package/dist/infrastructure/sandbox/SandboxManager.js +527 -0
  79. package/dist/infrastructure/sandbox/SandboxManager.js.map +1 -0
  80. package/dist/infrastructure/sandbox/index.d.ts +18 -0
  81. package/dist/infrastructure/sandbox/index.d.ts.map +1 -0
  82. package/dist/infrastructure/sandbox/index.js +38 -0
  83. package/dist/infrastructure/sandbox/index.js.map +1 -0
  84. package/dist/infrastructure/sandbox/profiles/agent-profiles.d.ts +53 -0
  85. package/dist/infrastructure/sandbox/profiles/agent-profiles.d.ts.map +1 -0
  86. package/dist/infrastructure/sandbox/profiles/agent-profiles.js +433 -0
  87. package/dist/infrastructure/sandbox/profiles/agent-profiles.js.map +1 -0
  88. package/dist/infrastructure/sandbox/types.d.ts +227 -0
  89. package/dist/infrastructure/sandbox/types.d.ts.map +1 -0
  90. package/dist/infrastructure/sandbox/types.js +63 -0
  91. package/dist/infrastructure/sandbox/types.js.map +1 -0
  92. package/dist/mcp/server-instructions.d.ts +1 -1
  93. package/dist/mcp/server-instructions.js +1 -1
  94. package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -1
  95. package/dist/persistence/SupabasePersistenceProvider.js +8 -4
  96. package/dist/persistence/SupabasePersistenceProvider.js.map +1 -1
  97. package/package.json +5 -1
@@ -9,31 +9,137 @@
9
9
  * - Embedding caching with content hashing
10
10
  * - Progress tracking for large batches
11
11
  * - Error handling and retries
12
+ * - Pluggable storage backends (SP-2 - Issue #146)
12
13
  */
13
14
  Object.defineProperty(exports, "__esModule", { value: true });
14
15
  exports.NomicEmbedder = void 0;
15
16
  const OllamaClient_1 = require("./OllamaClient");
16
17
  const EmbeddingCache_1 = require("./EmbeddingCache");
18
+ const EmbeddingCacheFactory_js_1 = require("./EmbeddingCacheFactory.js");
17
19
  const types_1 = require("./types");
18
20
  class NomicEmbedder {
19
- constructor(ollamaBaseUrl, maxCacheSize, batchSize = types_1.EMBEDDING_CONFIG.BATCH_SIZE) {
20
- this.client = new OllamaClient_1.OllamaClient(ollamaBaseUrl);
21
- this.cache = new EmbeddingCache_1.EmbeddingCache(maxCacheSize);
22
- this.batchSize = batchSize;
21
+ /**
22
+ * Create a NomicEmbedder instance
23
+ *
24
+ * @example Basic usage (backward compatible):
25
+ * ```typescript
26
+ * const embedder = new NomicEmbedder();
27
+ * ```
28
+ *
29
+ * @example With configuration object:
30
+ * ```typescript
31
+ * const embedder = new NomicEmbedder({
32
+ * ollamaBaseUrl: 'http://localhost:11434',
33
+ * cacheBackend: 'sqlite',
34
+ * cacheConfig: { sqlite: { dbPath: './data/embeddings.db' } }
35
+ * });
36
+ * await embedder.initializeCache();
37
+ * ```
38
+ *
39
+ * @example Legacy constructor (deprecated but supported):
40
+ * ```typescript
41
+ * const embedder = new NomicEmbedder('http://localhost:11434', 5000, 50);
42
+ * ```
43
+ */
44
+ constructor(configOrUrl, maxCacheSize, batchSize = types_1.EMBEDDING_CONFIG.BATCH_SIZE) {
45
+ this.cacheInitialized = false;
46
+ // Handle both legacy and new constructor signatures
47
+ if (typeof configOrUrl === 'string' || configOrUrl === undefined) {
48
+ // Legacy constructor: (ollamaBaseUrl?, maxCacheSize?, batchSize?)
49
+ this.client = new OllamaClient_1.OllamaClient(configOrUrl);
50
+ this.cache = new EmbeddingCache_1.EmbeddingCache(maxCacheSize);
51
+ this.batchSize = batchSize;
52
+ this.cacheInitialized = true; // Simple cache is immediately ready
53
+ }
54
+ else {
55
+ // New constructor with config object
56
+ const config = configOrUrl;
57
+ this.client = new OllamaClient_1.OllamaClient(config.ollamaBaseUrl);
58
+ this.batchSize = config.batchSize ?? types_1.EMBEDDING_CONFIG.BATCH_SIZE;
59
+ if (config.cache) {
60
+ // Use pre-configured cache
61
+ this.cache = config.cache;
62
+ if (config.cache instanceof EmbeddingCacheFactory_js_1.EnhancedEmbeddingCache) {
63
+ this.enhancedCache = config.cache;
64
+ }
65
+ this.cacheInitialized = true;
66
+ }
67
+ else if (config.cacheBackend && config.cacheBackend !== 'memory') {
68
+ // Create enhanced cache with specified backend
69
+ this.enhancedCache = (0, EmbeddingCacheFactory_js_1.createEmbeddingCache)({
70
+ backend: config.cacheBackend,
71
+ maxSize: config.maxCacheSize ?? config.cacheConfig?.maxSize,
72
+ ...config.cacheConfig,
73
+ });
74
+ this.cache = this.enhancedCache;
75
+ // Enhanced cache needs initialization
76
+ this.cacheInitialized = false;
77
+ }
78
+ else {
79
+ // Default: Simple in-memory cache (backward compatible)
80
+ this.cache = new EmbeddingCache_1.EmbeddingCache(config.maxCacheSize);
81
+ this.cacheInitialized = true;
82
+ }
83
+ }
84
+ }
85
+ /**
86
+ * Initialize the cache backend (required for Redis/SQLite)
87
+ * No-op for simple in-memory cache
88
+ */
89
+ async initializeCache() {
90
+ if (this.cacheInitialized) {
91
+ return;
92
+ }
93
+ if (this.enhancedCache) {
94
+ await this.enhancedCache.initialize();
95
+ }
96
+ this.cacheInitialized = true;
97
+ }
98
+ /**
99
+ * Close the cache backend and release resources
100
+ */
101
+ async closeCache() {
102
+ if (this.enhancedCache) {
103
+ await this.enhancedCache.close();
104
+ }
105
+ this.cacheInitialized = false;
106
+ }
107
+ /**
108
+ * Check if using enhanced cache with pluggable backend
109
+ */
110
+ isUsingEnhancedCache() {
111
+ return this.enhancedCache !== undefined;
112
+ }
113
+ /**
114
+ * Get the cache backend type
115
+ */
116
+ getCacheBackendType() {
117
+ if (this.enhancedCache) {
118
+ return this.enhancedCache.getBackendName();
119
+ }
120
+ return 'memory';
23
121
  }
24
122
  /**
25
123
  * Generate embedding for a single text string
26
124
  */
27
125
  async embed(text) {
28
- // Check cache first
29
- const cached = this.cache.get(text, types_1.EMBEDDING_CONFIG.MODEL);
126
+ // Ensure cache is initialized
127
+ if (!this.cacheInitialized) {
128
+ await this.initializeCache();
129
+ }
130
+ // Check cache first (handle both sync and async)
131
+ const cachedResult = this.cache.get(text, types_1.EMBEDDING_CONFIG.MODEL);
132
+ const cached = cachedResult instanceof Promise ? await cachedResult : cachedResult;
30
133
  if (cached) {
31
134
  return cached;
32
135
  }
33
136
  // Generate new embedding
34
137
  const embedding = await this.client.generateEmbedding(text);
35
- // Cache result
36
- this.cache.set(text, types_1.EMBEDDING_CONFIG.MODEL, embedding);
138
+ // Cache result (handle both sync and async)
139
+ const setResult = this.cache.set(text, types_1.EMBEDDING_CONFIG.MODEL, embedding);
140
+ if (setResult instanceof Promise) {
141
+ await setResult;
142
+ }
37
143
  return embedding;
38
144
  }
39
145
  /**
@@ -70,6 +176,10 @@ class NomicEmbedder {
70
176
  * Generate embeddings for multiple code chunks with batching
71
177
  */
72
178
  async embedBatch(chunks, progressCallback) {
179
+ // Ensure cache is initialized
180
+ if (!this.cacheInitialized) {
181
+ await this.initializeCache();
182
+ }
73
183
  const startTime = Date.now();
74
184
  const results = [];
75
185
  let cachedHits = 0;
@@ -127,8 +237,9 @@ class NomicEmbedder {
127
237
  const promises = chunks.map(async (chunk) => {
128
238
  const formattedText = this.formatForEmbedding(chunk);
129
239
  const chunkStartTime = Date.now();
130
- // Check cache
131
- const cachedEmbedding = this.cache.get(formattedText, types_1.EMBEDDING_CONFIG.MODEL);
240
+ // Check cache (handle both sync and async)
241
+ const cacheResult = this.cache.get(formattedText, types_1.EMBEDDING_CONFIG.MODEL);
242
+ const cachedEmbedding = cacheResult instanceof Promise ? await cacheResult : cacheResult;
132
243
  if (cachedEmbedding) {
133
244
  return {
134
245
  chunkId: chunk.id,
@@ -141,8 +252,11 @@ class NomicEmbedder {
141
252
  // Generate new embedding
142
253
  try {
143
254
  const embedding = await this.client.generateEmbedding(formattedText);
144
- // Cache the result
145
- this.cache.set(formattedText, types_1.EMBEDDING_CONFIG.MODEL, embedding);
255
+ // Cache the result (handle both sync and async)
256
+ const setResult = this.cache.set(formattedText, types_1.EMBEDDING_CONFIG.MODEL, embedding);
257
+ if (setResult instanceof Promise) {
258
+ await setResult;
259
+ }
146
260
  return {
147
261
  chunkId: chunk.id,
148
262
  embedding,
@@ -162,20 +276,38 @@ class NomicEmbedder {
162
276
  /**
163
277
  * Clear the embedding cache
164
278
  */
165
- clearCache() {
166
- this.cache.clear();
279
+ async clearCache() {
280
+ const result = this.cache.clear();
281
+ if (result instanceof Promise) {
282
+ await result;
283
+ }
167
284
  }
168
285
  /**
169
286
  * Get cache statistics
170
287
  */
171
- getCacheStats() {
172
- return this.cache.getStats();
288
+ async getCacheStats() {
289
+ const result = this.cache.getStats();
290
+ if (result instanceof Promise) {
291
+ return await result;
292
+ }
293
+ return result;
173
294
  }
174
295
  /**
175
296
  * Get cache memory usage estimate
297
+ * Note: Only available for simple in-memory cache
176
298
  */
177
299
  getCacheMemoryUsage() {
178
- return this.cache.getMemoryUsageEstimate();
300
+ // Only simple EmbeddingCache has this method
301
+ if (this.cache instanceof EmbeddingCache_1.EmbeddingCache) {
302
+ return this.cache.getMemoryUsageEstimate();
303
+ }
304
+ // For enhanced cache, estimate based on stats
305
+ const stats = this.cache.getStats?.();
306
+ if (stats && typeof stats === 'object' && 'size' in stats) {
307
+ // Rough estimate: 768 floats * 8 bytes + 100 bytes overhead per entry
308
+ return stats.size * (768 * 8 + 100);
309
+ }
310
+ return 0;
179
311
  }
180
312
  /**
181
313
  * Verify Ollama connection and model availability
@@ -191,9 +323,18 @@ class NomicEmbedder {
191
323
  }
192
324
  /**
193
325
  * Evict old cache entries
326
+ * Note: For enhanced cache with Redis/SQLite, TTL-based expiration is automatic
194
327
  */
195
- evictOldCacheEntries(ageMs) {
196
- return this.cache.evictOlderThan(ageMs);
328
+ async evictOldCacheEntries(ageMs) {
329
+ // Simple EmbeddingCache has evictOlderThan
330
+ if (this.cache instanceof EmbeddingCache_1.EmbeddingCache) {
331
+ return this.cache.evictOlderThan(ageMs);
332
+ }
333
+ // Enhanced cache uses prune method
334
+ if (this.enhancedCache) {
335
+ return this.enhancedCache.prune();
336
+ }
337
+ return 0;
197
338
  }
198
339
  /**
199
340
  * Warmup cache with common code patterns
@@ -210,8 +351,8 @@ class NomicEmbedder {
210
351
  /**
211
352
  * Estimate total time for embedding batch
212
353
  */
213
- estimateBatchTime(chunkCount, assumedTimePerEmbeddingMs = 100) {
214
- const cacheStats = this.getCacheStats();
354
+ async estimateBatchTime(chunkCount, assumedTimePerEmbeddingMs = 100) {
355
+ const cacheStats = await this.getCacheStats();
215
356
  const expectedCacheHitRate = cacheStats.hitRate || 0;
216
357
  const expectedCacheMisses = chunkCount * (1 - expectedCacheHitRate);
217
358
  return expectedCacheMisses * assumedTimePerEmbeddingMs;
@@ -1 +1 @@
1
- {"version":3,"file":"NomicEmbedder.js","sourceRoot":"","sources":["../../../src/code-intelligence/embeddings/NomicEmbedder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NomicEmbedder.js","sourceRoot":"","sources":["../../../src/code-intelligence/embeddings/NomicEmbedder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Memory Storage Backend for Embedding Cache
3
+ *
4
+ * In-memory storage with LRU eviction. Best for single-process
5
+ * applications with moderate cache sizes.
6
+ *
7
+ * @module code-intelligence/embeddings/backends/MemoryBackend
8
+ * @see Issue #146 - Security Hardening: SP-2 Dedicated Embedding Cache
9
+ */
10
+ import type { EmbeddingCacheEntry } from '../types.js';
11
+ import type { EmbeddingStorageBackend, MemoryBackendConfig, BackendStats } from './types.js';
12
+ /**
13
+ * Memory-based embedding storage backend
14
+ *
15
+ * Features:
16
+ * - LRU eviction when maxSize is reached
17
+ * - O(1) get/set operations
18
+ * - Automatic TTL-based expiration
19
+ */
20
+ export declare class MemoryStorageBackend implements EmbeddingStorageBackend {
21
+ readonly name = "memory";
22
+ readonly type: "memory";
23
+ private cache;
24
+ private config;
25
+ private initialized;
26
+ constructor(config?: MemoryBackendConfig);
27
+ initialize(): Promise<void>;
28
+ close(): Promise<void>;
29
+ isHealthy(): Promise<boolean>;
30
+ get(key: string): Promise<EmbeddingCacheEntry | null>;
31
+ set(key: string, entry: EmbeddingCacheEntry): Promise<void>;
32
+ has(key: string): Promise<boolean>;
33
+ delete(key: string): Promise<boolean>;
34
+ clear(): Promise<void>;
35
+ size(): Promise<number>;
36
+ keys(): AsyncIterable<string>;
37
+ pruneExpired(maxAgeMs: number): Promise<number>;
38
+ /**
39
+ * Get backend statistics
40
+ */
41
+ getStats(): BackendStats;
42
+ /**
43
+ * Get all entries (for export/migration)
44
+ */
45
+ exportAll(): Promise<Array<{
46
+ key: string;
47
+ entry: EmbeddingCacheEntry;
48
+ }>>;
49
+ /**
50
+ * Import entries (for migration)
51
+ */
52
+ importAll(entries: Array<{
53
+ key: string;
54
+ entry: EmbeddingCacheEntry;
55
+ }>): Promise<number>;
56
+ private isExpired;
57
+ private log;
58
+ }
59
+ //# sourceMappingURL=MemoryBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryBackend.d.ts","sourceRoot":"","sources":["../../../../src/code-intelligence/embeddings/backends/MemoryBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EACV,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACb,MAAM,YAAY,CAAC;AAGpB;;;;;;;GAOG;AACH,qBAAa,oBAAqB,YAAW,uBAAuB;IAClE,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAU;IAElC,OAAO,CAAC,KAAK,CAAmC;IAChD,OAAO,CAAC,MAAM,CAAgC;IAC9C,OAAO,CAAC,WAAW,CAAkB;gBAEzB,MAAM,GAAE,mBAAwB;IAWtC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAK3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMtB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAsBrD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAYlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAItB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC;IAM9B,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmBrD;;OAEG;IACH,QAAQ,IAAI,YAAY;IAexB;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC,CAAC;IAY9E;;OAEG;IACG,SAAS,CACb,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,mBAAmB,CAAA;KAAE,CAAC,GAC1D,OAAO,CAAC,MAAM,CAAC;IAkBlB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,GAAG;CAKZ"}
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ /**
3
+ * Memory Storage Backend for Embedding Cache
4
+ *
5
+ * In-memory storage with LRU eviction. Best for single-process
6
+ * applications with moderate cache sizes.
7
+ *
8
+ * @module code-intelligence/embeddings/backends/MemoryBackend
9
+ * @see Issue #146 - Security Hardening: SP-2 Dedicated Embedding Cache
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MemoryStorageBackend = void 0;
13
+ const types_js_1 = require("./types.js");
14
+ /**
15
+ * Memory-based embedding storage backend
16
+ *
17
+ * Features:
18
+ * - LRU eviction when maxSize is reached
19
+ * - O(1) get/set operations
20
+ * - Automatic TTL-based expiration
21
+ */
22
+ class MemoryStorageBackend {
23
+ constructor(config = {}) {
24
+ this.name = 'memory';
25
+ this.type = 'memory';
26
+ this.initialized = false;
27
+ this.config = {
28
+ maxSize: config.maxSize ?? types_js_1.DEFAULT_MAX_SIZE,
29
+ defaultTtlMs: config.defaultTtlMs ?? types_js_1.DEFAULT_TTL_MS,
30
+ debug: config.debug ?? false,
31
+ enableLru: config.enableLru ?? true,
32
+ };
33
+ this.cache = new Map();
34
+ }
35
+ async initialize() {
36
+ this.initialized = true;
37
+ this.log('Memory backend initialized');
38
+ }
39
+ async close() {
40
+ this.cache.clear();
41
+ this.initialized = false;
42
+ this.log('Memory backend closed');
43
+ }
44
+ async isHealthy() {
45
+ return this.initialized;
46
+ }
47
+ async get(key) {
48
+ const entry = this.cache.get(key);
49
+ if (!entry) {
50
+ return null;
51
+ }
52
+ // Check if expired
53
+ if (this.isExpired(entry)) {
54
+ this.cache.delete(key);
55
+ return null;
56
+ }
57
+ // LRU: Move to end
58
+ if (this.config.enableLru) {
59
+ this.cache.delete(key);
60
+ this.cache.set(key, entry);
61
+ }
62
+ return entry;
63
+ }
64
+ async set(key, entry) {
65
+ // Evict oldest if at capacity
66
+ if (this.cache.size >= this.config.maxSize && !this.cache.has(key)) {
67
+ const firstKey = this.cache.keys().next().value;
68
+ if (firstKey) {
69
+ this.cache.delete(firstKey);
70
+ this.log(`Evicted oldest entry: ${firstKey.substring(0, 16)}...`);
71
+ }
72
+ }
73
+ this.cache.set(key, entry);
74
+ }
75
+ async has(key) {
76
+ const entry = this.cache.get(key);
77
+ if (!entry)
78
+ return false;
79
+ if (this.isExpired(entry)) {
80
+ this.cache.delete(key);
81
+ return false;
82
+ }
83
+ return true;
84
+ }
85
+ async delete(key) {
86
+ return this.cache.delete(key);
87
+ }
88
+ async clear() {
89
+ this.cache.clear();
90
+ this.log('Cache cleared');
91
+ }
92
+ async size() {
93
+ return this.cache.size;
94
+ }
95
+ async *keys() {
96
+ for (const key of this.cache.keys()) {
97
+ yield key;
98
+ }
99
+ }
100
+ async pruneExpired(maxAgeMs) {
101
+ const now = Date.now();
102
+ const threshold = now - maxAgeMs;
103
+ let pruned = 0;
104
+ for (const [key, entry] of this.cache.entries()) {
105
+ if (entry.timestamp < threshold) {
106
+ this.cache.delete(key);
107
+ pruned++;
108
+ }
109
+ }
110
+ if (pruned > 0) {
111
+ this.log(`Pruned ${pruned} expired entries`);
112
+ }
113
+ return pruned;
114
+ }
115
+ /**
116
+ * Get backend statistics
117
+ */
118
+ getStats() {
119
+ return {
120
+ name: this.name,
121
+ type: this.type,
122
+ size: this.cache.size,
123
+ memoryUsageBytes: this.cache.size * types_js_1.BYTES_PER_ENTRY,
124
+ healthy: this.initialized,
125
+ lastHealthCheck: new Date(),
126
+ metrics: {
127
+ maxSize: this.config.maxSize,
128
+ utilization: (this.cache.size / this.config.maxSize) * 100,
129
+ },
130
+ };
131
+ }
132
+ /**
133
+ * Get all entries (for export/migration)
134
+ */
135
+ async exportAll() {
136
+ const entries = [];
137
+ for (const [key, entry] of this.cache.entries()) {
138
+ if (!this.isExpired(entry)) {
139
+ entries.push({ key, entry });
140
+ }
141
+ }
142
+ return entries;
143
+ }
144
+ /**
145
+ * Import entries (for migration)
146
+ */
147
+ async importAll(entries) {
148
+ let imported = 0;
149
+ for (const { key, entry } of entries) {
150
+ if (!this.isExpired(entry) && this.cache.size < this.config.maxSize) {
151
+ this.cache.set(key, entry);
152
+ imported++;
153
+ }
154
+ }
155
+ this.log(`Imported ${imported} entries`);
156
+ return imported;
157
+ }
158
+ // ============================================
159
+ // Private Methods
160
+ // ============================================
161
+ isExpired(entry) {
162
+ if (this.config.defaultTtlMs === 0)
163
+ return false;
164
+ return Date.now() - entry.timestamp > this.config.defaultTtlMs;
165
+ }
166
+ log(message) {
167
+ if (this.config.debug) {
168
+ console.log(`[MemoryBackend] ${message}`);
169
+ }
170
+ }
171
+ }
172
+ exports.MemoryStorageBackend = MemoryStorageBackend;
173
+ //# sourceMappingURL=MemoryBackend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryBackend.js","sourceRoot":"","sources":["../../../../src/code-intelligence/embeddings/backends/MemoryBackend.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Redis Storage Backend for Embedding Cache
3
+ *
4
+ * Distributed caching with automatic TTL expiration.
5
+ * Best for multi-process/multi-server deployments.
6
+ *
7
+ * @module code-intelligence/embeddings/backends/RedisBackend
8
+ * @see Issue #146 - Security Hardening: SP-2 Dedicated Embedding Cache
9
+ */
10
+ import type { EmbeddingCacheEntry } from '../types.js';
11
+ import type { EmbeddingStorageBackend, RedisBackendConfig, BackendStats } from './types.js';
12
+ /**
13
+ * Redis-based embedding storage backend
14
+ *
15
+ * Features:
16
+ * - Distributed caching across processes
17
+ * - Automatic TTL expiration via Redis SETEX
18
+ * - Connection pooling via ioredis
19
+ * - Graceful degradation on connection failure
20
+ */
21
+ export declare class RedisStorageBackend implements EmbeddingStorageBackend {
22
+ readonly name = "redis";
23
+ readonly type: "redis";
24
+ private client;
25
+ private config;
26
+ private initialized;
27
+ private healthy;
28
+ constructor(config: RedisBackendConfig);
29
+ initialize(): Promise<void>;
30
+ close(): Promise<void>;
31
+ isHealthy(): Promise<boolean>;
32
+ get(key: string): Promise<EmbeddingCacheEntry | null>;
33
+ set(key: string, entry: EmbeddingCacheEntry): Promise<void>;
34
+ has(key: string): Promise<boolean>;
35
+ delete(key: string): Promise<boolean>;
36
+ clear(): Promise<void>;
37
+ size(): Promise<number>;
38
+ keys(): AsyncIterable<string>;
39
+ pruneExpired(_maxAgeMs: number): Promise<number>;
40
+ /**
41
+ * Get backend statistics
42
+ */
43
+ getStats(): Promise<BackendStats>;
44
+ private prefixKey;
45
+ private serialize;
46
+ private deserialize;
47
+ private ensureClient;
48
+ private log;
49
+ }
50
+ //# sourceMappingURL=RedisBackend.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RedisBackend.d.ts","sourceRoot":"","sources":["../../../../src/code-intelligence/embeddings/backends/RedisBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,YAAY,EACb,MAAM,YAAY,CAAC;AAgBpB;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,YAAW,uBAAuB;IACjE,QAAQ,CAAC,IAAI,WAAW;IACxB,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IAEjC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,OAAO,CAAkB;gBAErB,MAAM,EAAE,kBAAkB;IAiBhC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4C3B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAUtB,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAa7B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAcrD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCtB,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IA0BtB,IAAI,IAAI,aAAa,CAAC,MAAM,CAAC;IAuB9B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOtD;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAqBvC,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,GAAG;CAKZ"}