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
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ /**
3
+ * Embedding Cache Factory
4
+ *
5
+ * Creates embedding caches with configurable backends and auto-pruning.
6
+ * Provides unified interface for memory, Redis, and SQLite backends.
7
+ *
8
+ * @module code-intelligence/embeddings/EmbeddingCacheFactory
9
+ * @see Issue #146 - Security Hardening: SP-2 Dedicated Embedding Cache
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.EnhancedEmbeddingCache = exports.DEFAULT_CACHE_CONFIG = void 0;
13
+ exports.createBackend = createBackend;
14
+ exports.createEmbeddingCache = createEmbeddingCache;
15
+ exports.createMemoryCache = createMemoryCache;
16
+ exports.createRedisCache = createRedisCache;
17
+ exports.createSQLiteCache = createSQLiteCache;
18
+ const types_js_1 = require("./backends/types.js");
19
+ const MemoryBackend_js_1 = require("./backends/MemoryBackend.js");
20
+ const RedisBackend_js_1 = require("./backends/RedisBackend.js");
21
+ const SQLiteBackend_js_1 = require("./backends/SQLiteBackend.js");
22
+ const crypto_1 = require("crypto");
23
+ /**
24
+ * Default cache configuration
25
+ */
26
+ exports.DEFAULT_CACHE_CONFIG = {
27
+ backend: 'memory',
28
+ maxSize: types_js_1.DEFAULT_MAX_SIZE,
29
+ ttlMs: types_js_1.DEFAULT_TTL_MS,
30
+ autoPruneIntervalMs: 60 * 60 * 1000, // 1 hour
31
+ debug: false,
32
+ };
33
+ /**
34
+ * Enhanced Embedding Cache with pluggable backends
35
+ *
36
+ * Features:
37
+ * - Pluggable backends (memory, Redis, SQLite)
38
+ * - Content hash-based deduplication
39
+ * - Automatic TTL-based expiration
40
+ * - Auto-pruning scheduler
41
+ * - Cache statistics
42
+ */
43
+ class EnhancedEmbeddingCache {
44
+ constructor(backend, config = {}) {
45
+ this.pruneInterval = null;
46
+ this.hits = 0;
47
+ this.misses = 0;
48
+ this.initialized = false;
49
+ this.backend = backend;
50
+ this.config = { ...exports.DEFAULT_CACHE_CONFIG, ...config };
51
+ }
52
+ /**
53
+ * Initialize the cache and start auto-pruning
54
+ */
55
+ async initialize() {
56
+ if (this.initialized)
57
+ return;
58
+ await this.backend.initialize();
59
+ // Start auto-pruning if configured
60
+ if (this.config.autoPruneIntervalMs > 0) {
61
+ this.startAutoPrune();
62
+ }
63
+ this.initialized = true;
64
+ this.log('Cache initialized');
65
+ }
66
+ /**
67
+ * Close the cache and stop auto-pruning
68
+ */
69
+ async close() {
70
+ this.stopAutoPrune();
71
+ await this.backend.close();
72
+ this.initialized = false;
73
+ this.log('Cache closed');
74
+ }
75
+ /**
76
+ * Generate content hash for cache key
77
+ */
78
+ hashContent(content, model) {
79
+ return (0, crypto_1.createHash)('sha256')
80
+ .update(`${model}:${content}`)
81
+ .digest('hex');
82
+ }
83
+ /**
84
+ * Get cached embedding
85
+ */
86
+ async get(content, model) {
87
+ const key = this.hashContent(content, model);
88
+ const entry = await this.backend.get(key);
89
+ if (entry) {
90
+ this.hits++;
91
+ return entry.embedding;
92
+ }
93
+ this.misses++;
94
+ return null;
95
+ }
96
+ /**
97
+ * Store embedding in cache
98
+ */
99
+ async set(content, model, embedding) {
100
+ const key = this.hashContent(content, model);
101
+ const entry = {
102
+ embedding,
103
+ timestamp: Date.now(),
104
+ model,
105
+ };
106
+ await this.backend.set(key, entry);
107
+ }
108
+ /**
109
+ * Check if embedding is cached
110
+ */
111
+ async has(content, model) {
112
+ const key = this.hashContent(content, model);
113
+ return this.backend.has(key);
114
+ }
115
+ /**
116
+ * Delete cached embedding
117
+ */
118
+ async delete(content, model) {
119
+ const key = this.hashContent(content, model);
120
+ return this.backend.delete(key);
121
+ }
122
+ /**
123
+ * Clear all cached embeddings
124
+ */
125
+ async clear() {
126
+ await this.backend.clear();
127
+ this.hits = 0;
128
+ this.misses = 0;
129
+ }
130
+ /**
131
+ * Get cache statistics
132
+ */
133
+ async getStats() {
134
+ const size = await this.backend.size();
135
+ const total = this.hits + this.misses;
136
+ const hitRate = total > 0 ? this.hits / total : 0;
137
+ return {
138
+ size,
139
+ hitRate,
140
+ hits: this.hits,
141
+ misses: this.misses,
142
+ backendType: this.config.backend,
143
+ };
144
+ }
145
+ /**
146
+ * Batch check for multiple contents
147
+ */
148
+ async batchHas(contents, model) {
149
+ const results = new Map();
150
+ // Process in parallel with Promise.all
151
+ const checks = contents.map(async (content) => {
152
+ const exists = await this.has(content, model);
153
+ return { content, exists };
154
+ });
155
+ const resolved = await Promise.all(checks);
156
+ for (const { content, exists } of resolved) {
157
+ results.set(content, exists);
158
+ }
159
+ return results;
160
+ }
161
+ /**
162
+ * Batch get for multiple contents
163
+ */
164
+ async batchGet(contents, model) {
165
+ const results = new Map();
166
+ const gets = contents.map(async (content) => {
167
+ const embedding = await this.get(content, model);
168
+ return { content, embedding };
169
+ });
170
+ const resolved = await Promise.all(gets);
171
+ for (const { content, embedding } of resolved) {
172
+ results.set(content, embedding);
173
+ }
174
+ return results;
175
+ }
176
+ /**
177
+ * Prune expired entries
178
+ */
179
+ async prune() {
180
+ return this.backend.pruneExpired(this.config.ttlMs);
181
+ }
182
+ /**
183
+ * Check if backend is healthy
184
+ */
185
+ async isHealthy() {
186
+ return this.backend.isHealthy();
187
+ }
188
+ /**
189
+ * Get backend name
190
+ */
191
+ getBackendName() {
192
+ return this.backend.name;
193
+ }
194
+ // ============================================
195
+ // Auto-Pruning
196
+ // ============================================
197
+ startAutoPrune() {
198
+ if (this.pruneInterval)
199
+ return;
200
+ this.pruneInterval = setInterval(async () => {
201
+ try {
202
+ const pruned = await this.prune();
203
+ if (pruned > 0) {
204
+ this.log(`Auto-pruned ${pruned} expired entries`);
205
+ }
206
+ }
207
+ catch (error) {
208
+ this.log(`Auto-prune error: ${error.message}`);
209
+ }
210
+ }, this.config.autoPruneIntervalMs);
211
+ this.log(`Auto-pruning started (interval: ${this.config.autoPruneIntervalMs}ms)`);
212
+ }
213
+ stopAutoPrune() {
214
+ if (this.pruneInterval) {
215
+ clearInterval(this.pruneInterval);
216
+ this.pruneInterval = null;
217
+ this.log('Auto-pruning stopped');
218
+ }
219
+ }
220
+ log(message) {
221
+ if (this.config.debug) {
222
+ console.log(`[EmbeddingCache:${this.backend.name}] ${message}`);
223
+ }
224
+ }
225
+ }
226
+ exports.EnhancedEmbeddingCache = EnhancedEmbeddingCache;
227
+ // ============================================
228
+ // Factory Functions
229
+ // ============================================
230
+ /**
231
+ * Create a backend instance based on configuration
232
+ */
233
+ function createBackend(config) {
234
+ switch (config.backend) {
235
+ case 'memory':
236
+ return new MemoryBackend_js_1.MemoryStorageBackend({
237
+ maxSize: config.maxSize,
238
+ defaultTtlMs: config.ttlMs,
239
+ debug: config.debug,
240
+ ...config.memory,
241
+ });
242
+ case 'redis':
243
+ if (!config.redis) {
244
+ throw new Error('Redis backend requires redis configuration');
245
+ }
246
+ return new RedisBackend_js_1.RedisStorageBackend({
247
+ ...config.redis,
248
+ maxSize: config.maxSize,
249
+ defaultTtlMs: config.ttlMs,
250
+ debug: config.debug,
251
+ });
252
+ case 'sqlite':
253
+ if (!config.sqlite) {
254
+ throw new Error('SQLite backend requires sqlite configuration');
255
+ }
256
+ return new SQLiteBackend_js_1.SQLiteStorageBackend({
257
+ ...config.sqlite,
258
+ maxSize: config.maxSize,
259
+ defaultTtlMs: config.ttlMs,
260
+ debug: config.debug,
261
+ });
262
+ default:
263
+ throw new Error(`Unknown backend type: ${config.backend}`);
264
+ }
265
+ }
266
+ /**
267
+ * Create an embedding cache with the specified configuration
268
+ */
269
+ function createEmbeddingCache(config = {}) {
270
+ const fullConfig = { ...exports.DEFAULT_CACHE_CONFIG, ...config };
271
+ const backend = createBackend(fullConfig);
272
+ return new EnhancedEmbeddingCache(backend, fullConfig);
273
+ }
274
+ /**
275
+ * Create a memory-backed embedding cache
276
+ */
277
+ function createMemoryCache(options = {}) {
278
+ return createEmbeddingCache({
279
+ backend: 'memory',
280
+ memory: options,
281
+ });
282
+ }
283
+ /**
284
+ * Create a Redis-backed embedding cache
285
+ */
286
+ function createRedisCache(options) {
287
+ return createEmbeddingCache({
288
+ backend: 'redis',
289
+ redis: options,
290
+ });
291
+ }
292
+ /**
293
+ * Create a SQLite-backed embedding cache
294
+ */
295
+ function createSQLiteCache(options) {
296
+ return createEmbeddingCache({
297
+ backend: 'sqlite',
298
+ sqlite: options,
299
+ });
300
+ }
301
+ //# sourceMappingURL=EmbeddingCacheFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EmbeddingCacheFactory.js","sourceRoot":"","sources":["../../../src/code-intelligence/embeddings/EmbeddingCacheFactory.ts"],"names":[],"mappings":"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"}
@@ -8,13 +8,81 @@
8
8
  * - Embedding caching with content hashing
9
9
  * - Progress tracking for large batches
10
10
  * - Error handling and retries
11
+ * - Pluggable storage backends (SP-2 - Issue #146)
11
12
  */
12
- import { CodeChunk, EmbeddingBatchResult, ProgressCallback } from './types';
13
+ import { EmbeddingCache } from './EmbeddingCache';
14
+ import { EnhancedEmbeddingCache, type EmbeddingCacheConfig } from './EmbeddingCacheFactory.js';
15
+ import type { BackendType } from './backends/types.js';
16
+ import { CodeChunk, EmbeddingBatchResult, ProgressCallback, CacheStats } from './types';
17
+ /**
18
+ * Configuration for NomicEmbedder
19
+ */
20
+ export interface NomicEmbedderConfig {
21
+ /** Ollama base URL (default: http://localhost:11434) */
22
+ ollamaBaseUrl?: string;
23
+ /** Batch size for processing (default: 100) */
24
+ batchSize?: number;
25
+ /** Maximum cache size for memory backend (default: 10000) */
26
+ maxCacheSize?: number;
27
+ /**
28
+ * Storage backend type (SP-2 - Issue #146)
29
+ * - 'memory': In-memory with LRU (default, backward compatible)
30
+ * - 'redis': Distributed caching (requires Redis config)
31
+ * - 'sqlite': Persistent local storage
32
+ */
33
+ cacheBackend?: BackendType;
34
+ /** Full cache configuration for advanced setups */
35
+ cacheConfig?: Partial<EmbeddingCacheConfig>;
36
+ /** Pre-configured cache instance (for dependency injection) */
37
+ cache?: EmbeddingCache | EnhancedEmbeddingCache;
38
+ }
13
39
  export declare class NomicEmbedder {
14
40
  private client;
15
41
  private cache;
42
+ private enhancedCache?;
16
43
  private batchSize;
17
- constructor(ollamaBaseUrl?: string, maxCacheSize?: number, batchSize?: number);
44
+ private cacheInitialized;
45
+ /**
46
+ * Create a NomicEmbedder instance
47
+ *
48
+ * @example Basic usage (backward compatible):
49
+ * ```typescript
50
+ * const embedder = new NomicEmbedder();
51
+ * ```
52
+ *
53
+ * @example With configuration object:
54
+ * ```typescript
55
+ * const embedder = new NomicEmbedder({
56
+ * ollamaBaseUrl: 'http://localhost:11434',
57
+ * cacheBackend: 'sqlite',
58
+ * cacheConfig: { sqlite: { dbPath: './data/embeddings.db' } }
59
+ * });
60
+ * await embedder.initializeCache();
61
+ * ```
62
+ *
63
+ * @example Legacy constructor (deprecated but supported):
64
+ * ```typescript
65
+ * const embedder = new NomicEmbedder('http://localhost:11434', 5000, 50);
66
+ * ```
67
+ */
68
+ constructor(configOrUrl?: NomicEmbedderConfig | string, maxCacheSize?: number, batchSize?: number);
69
+ /**
70
+ * Initialize the cache backend (required for Redis/SQLite)
71
+ * No-op for simple in-memory cache
72
+ */
73
+ initializeCache(): Promise<void>;
74
+ /**
75
+ * Close the cache backend and release resources
76
+ */
77
+ closeCache(): Promise<void>;
78
+ /**
79
+ * Check if using enhanced cache with pluggable backend
80
+ */
81
+ isUsingEnhancedCache(): boolean;
82
+ /**
83
+ * Get the cache backend type
84
+ */
85
+ getCacheBackendType(): string;
18
86
  /**
19
87
  * Generate embedding for a single text string
20
88
  */
@@ -35,13 +103,16 @@ export declare class NomicEmbedder {
35
103
  /**
36
104
  * Clear the embedding cache
37
105
  */
38
- clearCache(): void;
106
+ clearCache(): Promise<void>;
39
107
  /**
40
108
  * Get cache statistics
41
109
  */
42
- getCacheStats(): import("./types").CacheStats;
110
+ getCacheStats(): Promise<CacheStats & {
111
+ backendType?: BackendType;
112
+ }>;
43
113
  /**
44
114
  * Get cache memory usage estimate
115
+ * Note: Only available for simple in-memory cache
45
116
  */
46
117
  getCacheMemoryUsage(): number;
47
118
  /**
@@ -54,8 +125,9 @@ export declare class NomicEmbedder {
54
125
  getServerInfo(): Promise<import("./types").OllamaHealthResponse | null>;
55
126
  /**
56
127
  * Evict old cache entries
128
+ * Note: For enhanced cache with Redis/SQLite, TTL-based expiration is automatic
57
129
  */
58
- evictOldCacheEntries(ageMs: number): number;
130
+ evictOldCacheEntries(ageMs: number): Promise<number>;
59
131
  /**
60
132
  * Warmup cache with common code patterns
61
133
  */
@@ -67,7 +139,7 @@ export declare class NomicEmbedder {
67
139
  /**
68
140
  * Estimate total time for embedding batch
69
141
  */
70
- estimateBatchTime(chunkCount: number, assumedTimePerEmbeddingMs?: number): number;
142
+ estimateBatchTime(chunkCount: number, assumedTimePerEmbeddingMs?: number): Promise<number>;
71
143
  /**
72
144
  * Get configuration info
73
145
  */
@@ -1 +1 @@
1
- {"version":3,"file":"NomicEmbedder.d.ts","sourceRoot":"","sources":["../../../src/code-intelligence/embeddings/NomicEmbedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EACL,SAAS,EAET,oBAAoB,EAEpB,gBAAgB,EAEjB,MAAM,SAAS,CAAC;AAEjB,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAiB;IAC9B,OAAO,CAAC,SAAS,CAAS;gBAGxB,aAAa,CAAC,EAAE,MAAM,EACtB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,GAAE,MAAoC;IAOjD;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgB5C;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAkC5C;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,SAAS,EAAE,EACnB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,oBAAoB,CAAC;IAyDhC;;OAEG;YACW,YAAY;IAgD1B;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa;IAIb;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;OAEG;IACG,aAAa;IAInB;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;IAI1C;;OAEG;IACH,iBAAiB,CACf,UAAU,EAAE,MAAM,EAClB,yBAAyB,GAAE,MAAY,GACtC,MAAM;IAQT;;OAEG;IACH,SAAS;;;;;;;CASV"}
1
+ {"version":3,"file":"NomicEmbedder.d.ts","sourceRoot":"","sources":["../../../src/code-intelligence/embeddings/NomicEmbedder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EACL,sBAAsB,EAEtB,KAAK,oBAAoB,EAC1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,SAAS,EAET,oBAAoB,EAEpB,gBAAgB,EAChB,UAAU,EAEX,MAAM,SAAS,CAAC;AAYjB;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC5C,+DAA+D;IAC/D,KAAK,CAAC,EAAE,cAAc,GAAG,sBAAsB,CAAC;CACjD;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,aAAa,CAAC,CAAyB;IAC/C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,gBAAgB,CAAkB;IAE1C;;;;;;;;;;;;;;;;;;;;;;OAsBG;gBAED,WAAW,CAAC,EAAE,mBAAmB,GAAG,MAAM,EAC1C,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,GAAE,MAAoC;IAwCjD;;;OAGG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAO7B;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAyB5C;;;OAGG;IACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM;IAkC5C;;OAEG;IACG,UAAU,CACd,MAAM,EAAE,SAAS,EAAE,EACnB,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,oBAAoB,CAAC;IA8DhC;;OAEG;YACW,YAAY;IAoD1B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAOjC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,GAAG;QAAE,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,CAAC;IAQ1E;;;OAGG;IACH,mBAAmB,IAAI,MAAM;IAc7B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAIrC;;OAEG;IACG,aAAa;IAInB;;;OAGG;IACG,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAY1D;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,EAAE;IAI1C;;OAEG;IACG,iBAAiB,CACrB,UAAU,EAAE,MAAM,EAClB,yBAAyB,GAAE,MAAY,GACtC,OAAO,CAAC,MAAM,CAAC;IAQlB;;OAEG;IACH,SAAS;;;;;;;CASV"}