agentic-qe 2.8.0 → 2.8.1

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 (142) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/README.md +1 -1
  3. package/dist/agents/BaseAgent.d.ts +128 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +256 -0
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/cli/commands/supabase/index.d.ts +20 -0
  8. package/dist/cli/commands/supabase/index.d.ts.map +1 -0
  9. package/dist/cli/commands/supabase/index.js +632 -0
  10. package/dist/cli/commands/supabase/index.js.map +1 -0
  11. package/dist/cli/index.js +3 -0
  12. package/dist/cli/index.js.map +1 -1
  13. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  14. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +8 -8
  15. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -1
  16. package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -1
  17. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
  18. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
  19. package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
  20. package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
  21. package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
  22. package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
  23. package/dist/mcp/handlers/ruvector/index.js +9 -0
  24. package/dist/mcp/handlers/ruvector/index.js.map +1 -0
  25. package/dist/mcp/server-instructions.d.ts +1 -1
  26. package/dist/mcp/server-instructions.js +1 -1
  27. package/dist/mcp/server.d.ts.map +1 -1
  28. package/dist/mcp/server.js +100 -22
  29. package/dist/mcp/server.js.map +1 -1
  30. package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
  31. package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
  32. package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
  33. package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
  34. package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
  35. package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
  36. package/dist/nervous-system/adapters/CircadianController.js +882 -0
  37. package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
  38. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
  39. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
  40. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
  41. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
  42. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
  43. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
  44. package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
  45. package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
  46. package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
  47. package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
  48. package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
  49. package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
  50. package/dist/nervous-system/index.d.ts +25 -0
  51. package/dist/nervous-system/index.d.ts.map +1 -0
  52. package/dist/nervous-system/index.js +80 -0
  53. package/dist/nervous-system/index.js.map +1 -0
  54. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
  55. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
  56. package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
  57. package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
  58. package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
  59. package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
  60. package/dist/nervous-system/integration/CircadianAgent.js +696 -0
  61. package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
  62. package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
  63. package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
  64. package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
  65. package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
  66. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
  67. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
  68. package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
  69. package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
  70. package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
  71. package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
  72. package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
  73. package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
  74. package/dist/nervous-system/integration/index.d.ts +22 -0
  75. package/dist/nervous-system/integration/index.d.ts.map +1 -0
  76. package/dist/nervous-system/integration/index.js +44 -0
  77. package/dist/nervous-system/integration/index.js.map +1 -0
  78. package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
  79. package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
  80. package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
  81. package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
  82. package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
  83. package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
  84. package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
  85. package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
  86. package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
  87. package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
  88. package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
  89. package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
  90. package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
  91. package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
  92. package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
  93. package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
  94. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
  95. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
  96. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
  97. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
  98. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
  99. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
  100. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
  101. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
  102. package/dist/nervous-system/persistence/index.d.ts +22 -0
  103. package/dist/nervous-system/persistence/index.d.ts.map +1 -0
  104. package/dist/nervous-system/persistence/index.js +45 -0
  105. package/dist/nervous-system/persistence/index.js.map +1 -0
  106. package/dist/nervous-system/wasm-loader.d.ts +52 -0
  107. package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
  108. package/dist/nervous-system/wasm-loader.js +188 -0
  109. package/dist/nervous-system/wasm-loader.js.map +1 -0
  110. package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
  111. package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
  112. package/dist/persistence/HybridPersistenceProvider.js +1086 -0
  113. package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
  114. package/dist/persistence/IPersistenceProvider.d.ts +657 -0
  115. package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
  116. package/dist/persistence/IPersistenceProvider.js +11 -0
  117. package/dist/persistence/IPersistenceProvider.js.map +1 -0
  118. package/dist/persistence/SupabaseConfig.d.ts +176 -0
  119. package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
  120. package/dist/persistence/SupabaseConfig.js +277 -0
  121. package/dist/persistence/SupabaseConfig.js.map +1 -0
  122. package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
  123. package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
  124. package/dist/persistence/SupabasePersistenceProvider.js +955 -0
  125. package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
  126. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
  127. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
  128. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
  129. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
  130. package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
  131. package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
  132. package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
  133. package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
  134. package/dist/persistence/adapters/index.d.ts +11 -0
  135. package/dist/persistence/adapters/index.d.ts.map +1 -0
  136. package/dist/persistence/adapters/index.js +20 -0
  137. package/dist/persistence/adapters/index.js.map +1 -0
  138. package/dist/persistence/index.d.ts +14 -0
  139. package/dist/persistence/index.d.ts.map +1 -1
  140. package/dist/persistence/index.js +36 -1
  141. package/dist/persistence/index.js.map +1 -1
  142. package/package.json +3 -1
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+ /**
3
+ * Code Intelligence Sync Adapter
4
+ *
5
+ * Wraps CodeChunkStore to provide automatic sync to cloud persistence.
6
+ * Intercepts code chunk operations and queues them for background sync.
7
+ *
8
+ * @module persistence/adapters/CodeIntelligenceSyncAdapter
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.CodeIntelligenceSyncAdapter = void 0;
12
+ exports.createCodeIntelligenceSyncAdapter = createCodeIntelligenceSyncAdapter;
13
+ const events_1 = require("events");
14
+ // ============================================
15
+ // Adapter Implementation
16
+ // ============================================
17
+ /**
18
+ * CodeIntelligenceSyncAdapter wraps CodeChunkStore to sync code chunks to cloud
19
+ *
20
+ * @example
21
+ * ```typescript
22
+ * const adapter = new CodeIntelligenceSyncAdapter({
23
+ * provider: hybridProvider,
24
+ * codeStore: codeChunkStore,
25
+ * projectId: 'my-project',
26
+ * autoSync: true,
27
+ * });
28
+ *
29
+ * // Store a chunk - syncs automatically
30
+ * await adapter.storeChunk({
31
+ * id: 'chunk-1',
32
+ * filePath: 'src/index.ts',
33
+ * content: 'export function hello() {}',
34
+ * embedding: [...],
35
+ * chunkType: 'function',
36
+ * language: 'typescript',
37
+ * });
38
+ *
39
+ * // Or trigger manual sync
40
+ * await adapter.sync();
41
+ * ```
42
+ */
43
+ class CodeIntelligenceSyncAdapter extends events_1.EventEmitter {
44
+ constructor(config) {
45
+ super();
46
+ this.syncQueue = [];
47
+ this.syncTimer = null;
48
+ this.isSyncing = false;
49
+ this.config = {
50
+ provider: config.provider,
51
+ codeStore: config.codeStore,
52
+ projectId: config.projectId,
53
+ syncDebounceMs: config.syncDebounceMs ?? 2000,
54
+ autoSync: config.autoSync ?? true,
55
+ batchSize: config.batchSize ?? 50,
56
+ debug: config.debug ?? false,
57
+ };
58
+ }
59
+ // ============================================
60
+ // Code Chunk Operations (with sync)
61
+ // ============================================
62
+ /**
63
+ * Store a code chunk and queue for sync
64
+ */
65
+ async storeChunk(chunk) {
66
+ // Write to local store first
67
+ await this.config.codeStore.storeChunk(chunk);
68
+ // Convert to persistence format and queue for sync
69
+ const persistChunk = this.toPersistenceChunk(chunk);
70
+ this.queueOperation({
71
+ type: 'store',
72
+ chunk: persistChunk,
73
+ timestamp: Date.now(),
74
+ });
75
+ // Sync immediately if provider supports it
76
+ if (this.config.autoSync && this.config.provider.storeCodeChunk) {
77
+ try {
78
+ await this.config.provider.storeCodeChunk(persistChunk);
79
+ this.emit('synced', { id: chunk.id, filePath: chunk.filePath });
80
+ }
81
+ catch (error) {
82
+ this.log(`Failed to sync chunk ${chunk.id}:`, error);
83
+ // Will be retried in next batch sync
84
+ }
85
+ }
86
+ }
87
+ /**
88
+ * Store multiple chunks in batch
89
+ */
90
+ async storeChunks(chunks) {
91
+ // Write to local store first
92
+ await this.config.codeStore.storeChunks(chunks);
93
+ // Convert and queue for sync
94
+ const persistChunks = chunks.map((c) => this.toPersistenceChunk(c));
95
+ for (const chunk of persistChunks) {
96
+ this.queueOperation({
97
+ type: 'store',
98
+ chunk,
99
+ timestamp: Date.now(),
100
+ });
101
+ }
102
+ // Batch sync if provider supports it
103
+ if (this.config.autoSync && this.config.provider.storeCodeChunks) {
104
+ try {
105
+ await this.config.provider.storeCodeChunks(persistChunks);
106
+ this.emit('synced:batch', { count: chunks.length });
107
+ }
108
+ catch (error) {
109
+ this.log(`Failed to batch sync ${chunks.length} chunks:`, error);
110
+ }
111
+ }
112
+ }
113
+ /**
114
+ * Search for similar code chunks
115
+ * Searches local store first, falls back to cloud if needed
116
+ */
117
+ async search(queryEmbedding, options) {
118
+ // Try local search first
119
+ const searchOpts = {
120
+ topK: options?.topK,
121
+ minScore: options?.minScore,
122
+ language: options?.language,
123
+ filePattern: options?.filePattern,
124
+ entityType: options?.entityType,
125
+ includeContent: options?.includeContent,
126
+ };
127
+ const localResults = await this.config.codeStore.search(queryEmbedding, searchOpts);
128
+ if (localResults.length > 0) {
129
+ return localResults.map((r) => ({
130
+ chunk: {
131
+ id: r.id,
132
+ projectId: this.config.projectId,
133
+ filePath: r.filePath,
134
+ startLine: r.startLine,
135
+ endLine: r.endLine,
136
+ chunkType: r.chunkType || 'block',
137
+ name: r.name,
138
+ content: r.content,
139
+ language: r.language || 'other',
140
+ metadata: r.metadata,
141
+ indexedAt: new Date(),
142
+ },
143
+ score: r.score,
144
+ highlights: [],
145
+ }));
146
+ }
147
+ // Fall back to cloud search if local is empty
148
+ if (this.config.provider.searchSimilarCode) {
149
+ try {
150
+ // Map Language to CodeLanguage (they should be compatible)
151
+ const cloudLanguage = options?.language;
152
+ return await this.config.provider.searchSimilarCode(queryEmbedding, {
153
+ limit: options?.topK ?? 10,
154
+ minScore: options?.minScore ?? 0,
155
+ language: cloudLanguage,
156
+ projectId: this.config.projectId,
157
+ });
158
+ }
159
+ catch (error) {
160
+ this.log('Failed to search cloud:', error);
161
+ }
162
+ }
163
+ return [];
164
+ }
165
+ /**
166
+ * Hybrid search combining vector similarity and keyword matching
167
+ */
168
+ async hybridSearch(queryEmbedding, queryText, options) {
169
+ const searchOpts = {
170
+ topK: options?.topK,
171
+ minScore: options?.minScore,
172
+ language: options?.language,
173
+ filePattern: options?.filePattern,
174
+ semanticWeight: options?.semanticWeight,
175
+ };
176
+ const localResults = await this.config.codeStore.hybridSearch(queryEmbedding, queryText, searchOpts);
177
+ return localResults.map((r) => ({
178
+ chunk: {
179
+ id: r.id,
180
+ projectId: this.config.projectId,
181
+ filePath: r.filePath,
182
+ startLine: r.startLine,
183
+ endLine: r.endLine,
184
+ chunkType: r.chunkType || 'block',
185
+ name: r.name,
186
+ content: r.content,
187
+ language: r.language || 'other',
188
+ metadata: r.metadata,
189
+ indexedAt: new Date(),
190
+ },
191
+ score: r.score,
192
+ highlights: [],
193
+ }));
194
+ }
195
+ /**
196
+ * Delete chunks for a file and sync deletion
197
+ */
198
+ async deleteChunksForFile(filePath) {
199
+ // Delete from local
200
+ const deleted = await this.config.codeStore.deleteChunksForFile(filePath);
201
+ // Queue deletion sync
202
+ this.queueOperation({
203
+ type: 'delete',
204
+ filePath,
205
+ timestamp: Date.now(),
206
+ });
207
+ // Sync deletion immediately if supported
208
+ if (this.config.autoSync && this.config.provider.deleteCodeChunksForFile) {
209
+ try {
210
+ await this.config.provider.deleteCodeChunksForFile(this.config.projectId, filePath);
211
+ }
212
+ catch (error) {
213
+ this.log(`Failed to sync delete for ${filePath}:`, error);
214
+ }
215
+ }
216
+ return deleted;
217
+ }
218
+ /**
219
+ * Get statistics from local store
220
+ */
221
+ async getStats() {
222
+ const stats = await this.config.codeStore.getStats();
223
+ return {
224
+ ...stats,
225
+ pendingSync: this.syncQueue.length,
226
+ };
227
+ }
228
+ // ============================================
229
+ // Sync Operations
230
+ // ============================================
231
+ /**
232
+ * Force sync all pending operations
233
+ */
234
+ async sync() {
235
+ if (this.isSyncing) {
236
+ return { synced: 0, failed: 0 };
237
+ }
238
+ this.isSyncing = true;
239
+ let synced = 0;
240
+ let failed = 0;
241
+ try {
242
+ const queue = [...this.syncQueue];
243
+ this.syncQueue = [];
244
+ // Group by operation type
245
+ const storeOps = queue.filter((op) => op.type === 'store' && op.chunk);
246
+ const deleteOps = queue.filter((op) => op.type === 'delete' && op.filePath);
247
+ // Batch store operations
248
+ if (storeOps.length > 0 && this.config.provider.storeCodeChunks) {
249
+ const chunks = storeOps.map((op) => op.chunk);
250
+ // Process in batches
251
+ for (let i = 0; i < chunks.length; i += this.config.batchSize) {
252
+ const batch = chunks.slice(i, i + this.config.batchSize);
253
+ try {
254
+ await this.config.provider.storeCodeChunks(batch);
255
+ synced += batch.length;
256
+ }
257
+ catch (error) {
258
+ this.log(`Batch sync failed for ${batch.length} chunks:`, error);
259
+ // Re-queue failed items
260
+ batch.forEach((c) => this.syncQueue.push({ type: 'store', chunk: c, timestamp: Date.now() }));
261
+ failed += batch.length;
262
+ }
263
+ }
264
+ }
265
+ // Process delete operations
266
+ for (const op of deleteOps) {
267
+ if (op.filePath && this.config.provider.deleteCodeChunksForFile) {
268
+ try {
269
+ await this.config.provider.deleteCodeChunksForFile(this.config.projectId, op.filePath);
270
+ synced++;
271
+ }
272
+ catch (error) {
273
+ this.log(`Delete sync failed for ${op.filePath}:`, error);
274
+ this.syncQueue.push(op);
275
+ failed++;
276
+ }
277
+ }
278
+ }
279
+ this.emit('sync:completed', { synced, failed });
280
+ }
281
+ finally {
282
+ this.isSyncing = false;
283
+ }
284
+ return { synced, failed };
285
+ }
286
+ /**
287
+ * Import code chunks from cloud to local store
288
+ */
289
+ async importFromCloud(options) {
290
+ if (!this.config.provider.queryCodeChunks) {
291
+ return 0;
292
+ }
293
+ const query = {
294
+ projectId: this.config.projectId,
295
+ language: options?.language,
296
+ filePattern: options?.filePattern,
297
+ limit: options?.limit ?? 1000,
298
+ };
299
+ const cloudChunks = await this.config.provider.queryCodeChunks(query);
300
+ // Store in local store
301
+ const storeChunks = cloudChunks.map((c) => ({
302
+ id: c.id,
303
+ filePath: c.filePath,
304
+ content: c.content,
305
+ embedding: c.embedding ?? [],
306
+ chunkType: c.chunkType,
307
+ name: c.name,
308
+ startLine: c.startLine,
309
+ endLine: c.endLine,
310
+ language: c.language,
311
+ metadata: c.metadata,
312
+ }));
313
+ if (storeChunks.length > 0) {
314
+ await this.config.codeStore.storeChunks(storeChunks);
315
+ }
316
+ this.emit('import:completed', { count: cloudChunks.length });
317
+ return cloudChunks.length;
318
+ }
319
+ /**
320
+ * Export all local chunks to cloud
321
+ */
322
+ async exportToCloud(options) {
323
+ if (!this.config.provider.storeCodeChunks) {
324
+ return 0;
325
+ }
326
+ // Search for all chunks with minimal filters
327
+ // Note: We need to search with a dummy embedding to get all chunks
328
+ // This is a limitation - ideally we'd have a listAll method
329
+ const stats = await this.config.codeStore.getStats();
330
+ if (stats.chunkCount === 0) {
331
+ return 0;
332
+ }
333
+ // For export, we'll queue all existing chunks for sync
334
+ // The actual sync will be done via the sync() method
335
+ this.log(`Export: ${stats.chunkCount} chunks queued for sync`);
336
+ this.emit('export:started', { count: stats.chunkCount });
337
+ // Trigger sync
338
+ const result = await this.sync();
339
+ this.emit('export:completed', result);
340
+ return result.synced;
341
+ }
342
+ // ============================================
343
+ // Entity Operations (passthrough)
344
+ // ============================================
345
+ /**
346
+ * Store a code entity (local only, entities not synced to cloud)
347
+ */
348
+ async storeEntity(entity) {
349
+ await this.config.codeStore.storeEntity(entity);
350
+ }
351
+ /**
352
+ * Store a relationship between entities (local only)
353
+ */
354
+ async storeRelationship(relationship) {
355
+ await this.config.codeStore.storeRelationship(relationship);
356
+ }
357
+ /**
358
+ * Get relationships for an entity
359
+ */
360
+ async getRelationships(entityId, direction = 'both') {
361
+ return await this.config.codeStore.getRelationships(entityId, direction);
362
+ }
363
+ // ============================================
364
+ // Utility Methods
365
+ // ============================================
366
+ /**
367
+ * Get sync statistics
368
+ */
369
+ getSyncStats() {
370
+ return {
371
+ pendingOperations: this.syncQueue.length,
372
+ isSyncing: this.isSyncing,
373
+ projectId: this.config.projectId,
374
+ };
375
+ }
376
+ /**
377
+ * Clear sync queue
378
+ */
379
+ clearQueue() {
380
+ this.syncQueue = [];
381
+ }
382
+ /**
383
+ * Health check including cloud connectivity
384
+ */
385
+ async healthCheck() {
386
+ try {
387
+ const localHealth = await this.config.codeStore.healthCheck();
388
+ const cloudConfigured = !!this.config.provider.storeCodeChunk;
389
+ return {
390
+ localHealthy: localHealth.healthy,
391
+ cloudConfigured,
392
+ pendingSync: this.syncQueue.length,
393
+ };
394
+ }
395
+ catch (error) {
396
+ return {
397
+ localHealthy: false,
398
+ cloudConfigured: false,
399
+ pendingSync: this.syncQueue.length,
400
+ error: error.message,
401
+ };
402
+ }
403
+ }
404
+ /**
405
+ * Close underlying store
406
+ */
407
+ async close() {
408
+ if (this.syncTimer) {
409
+ clearTimeout(this.syncTimer);
410
+ this.syncTimer = null;
411
+ }
412
+ // Flush any pending syncs
413
+ if (this.syncQueue.length > 0) {
414
+ await this.sync();
415
+ }
416
+ await this.config.codeStore.close();
417
+ }
418
+ // ============================================
419
+ // Private Methods
420
+ // ============================================
421
+ toPersistenceChunk(chunk) {
422
+ return {
423
+ id: chunk.id,
424
+ projectId: this.config.projectId,
425
+ filePath: chunk.filePath,
426
+ startLine: chunk.startLine ?? 0,
427
+ endLine: chunk.endLine ?? 0,
428
+ chunkType: chunk.chunkType || 'block',
429
+ name: chunk.name,
430
+ content: chunk.content,
431
+ language: chunk.language || 'other',
432
+ embedding: chunk.embedding,
433
+ metadata: chunk.metadata,
434
+ indexedAt: new Date(),
435
+ };
436
+ }
437
+ queueOperation(op) {
438
+ // For store operations, replace existing entry for same chunk
439
+ if (op.type === 'store' && op.chunk) {
440
+ this.syncQueue = this.syncQueue.filter((existing) => !(existing.type === 'store' && existing.chunk?.id === op.chunk?.id));
441
+ }
442
+ // For delete operations, remove any pending stores for that file
443
+ if (op.type === 'delete' && op.filePath) {
444
+ this.syncQueue = this.syncQueue.filter((existing) => !(existing.type === 'store' && existing.chunk?.filePath === op.filePath));
445
+ }
446
+ this.syncQueue.push(op);
447
+ // Schedule debounced sync
448
+ if (this.config.autoSync && !this.syncTimer) {
449
+ this.syncTimer = setTimeout(() => {
450
+ this.syncTimer = null;
451
+ this.sync().catch((err) => this.log('Background sync failed:', err));
452
+ }, this.config.syncDebounceMs);
453
+ }
454
+ }
455
+ log(message, data) {
456
+ if (this.config.debug) {
457
+ console.log(`[CodeIntelligenceSyncAdapter] ${message}`, data ?? '');
458
+ }
459
+ }
460
+ }
461
+ exports.CodeIntelligenceSyncAdapter = CodeIntelligenceSyncAdapter;
462
+ /**
463
+ * Factory function to create a CodeIntelligenceSyncAdapter
464
+ */
465
+ function createCodeIntelligenceSyncAdapter(config) {
466
+ return new CodeIntelligenceSyncAdapter(config);
467
+ }
468
+ //# sourceMappingURL=CodeIntelligenceSyncAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeIntelligenceSyncAdapter.js","sourceRoot":"","sources":["../../../src/persistence/adapters/CodeIntelligenceSyncAdapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Memory Sync Adapter
3
+ *
4
+ * Wraps SwarmMemoryManager to provide automatic sync to cloud persistence.
5
+ * Intercepts memory operations and queues them for background sync.
6
+ *
7
+ * @module persistence/adapters/MemorySyncAdapter
8
+ */
9
+ import { EventEmitter } from 'events';
10
+ import type { IPersistenceProvider, MemoryAccessLevel } from '../IPersistenceProvider.js';
11
+ import type { SwarmMemoryManager, SerializableValue } from '../../core/memory/SwarmMemoryManager.js';
12
+ /**
13
+ * Configuration for MemorySyncAdapter
14
+ */
15
+ export interface MemorySyncAdapterConfig {
16
+ /** The persistence provider to sync to */
17
+ provider: IPersistenceProvider;
18
+ /** The SwarmMemoryManager to wrap */
19
+ memoryManager: SwarmMemoryManager;
20
+ /** Default owner for synced entries */
21
+ defaultOwner?: string;
22
+ /** Default access level for synced entries */
23
+ defaultAccessLevel?: MemoryAccessLevel;
24
+ /** Partitions to sync (empty = all) */
25
+ syncPartitions?: string[];
26
+ /** Partitions to exclude from sync */
27
+ excludePartitions?: string[];
28
+ /** Minimum sync interval in ms */
29
+ syncDebounceMs?: number;
30
+ /** Enable auto-sync on write */
31
+ autoSync?: boolean;
32
+ }
33
+ /**
34
+ * MemorySyncAdapter wraps SwarmMemoryManager to sync memory to cloud
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const adapter = new MemorySyncAdapter({
39
+ * provider: hybridProvider,
40
+ * memoryManager: swarmMemory,
41
+ * defaultOwner: 'agent-1',
42
+ * autoSync: true,
43
+ * });
44
+ *
45
+ * // Use adapter methods - they sync automatically
46
+ * await adapter.set('config', { theme: 'dark' }, 'settings');
47
+ *
48
+ * // Or trigger manual sync
49
+ * await adapter.sync();
50
+ * ```
51
+ */
52
+ export declare class MemorySyncAdapter extends EventEmitter {
53
+ private readonly config;
54
+ private syncQueue;
55
+ private syncTimer;
56
+ private isSyncing;
57
+ constructor(config: MemorySyncAdapterConfig);
58
+ /**
59
+ * Set a value in memory and queue for sync
60
+ */
61
+ set(key: string, value: SerializableValue, partition?: string, options?: {
62
+ owner?: string;
63
+ accessLevel?: MemoryAccessLevel;
64
+ teamId?: string;
65
+ swarmId?: string;
66
+ ttl?: number;
67
+ }): Promise<void>;
68
+ /**
69
+ * Get a value from memory (local first, then cloud)
70
+ */
71
+ get(key: string, partition?: string): Promise<SerializableValue | null>;
72
+ /**
73
+ * Delete a value from memory and sync
74
+ */
75
+ delete(key: string, partition?: string): Promise<void>;
76
+ /**
77
+ * Check if a key exists (checks local memory only)
78
+ */
79
+ has(key: string, partition?: string): Promise<boolean>;
80
+ /**
81
+ * Force sync all pending operations
82
+ */
83
+ sync(): Promise<{
84
+ synced: number;
85
+ failed: number;
86
+ }>;
87
+ /**
88
+ * Import all memory from cloud to local
89
+ */
90
+ importFromCloud(partition?: string): Promise<number>;
91
+ /**
92
+ * Export memory entries to cloud
93
+ * Note: Exports entries from the sync queue, call sync() for full export
94
+ */
95
+ exportToCloud(): Promise<number>;
96
+ /**
97
+ * Get sync statistics
98
+ */
99
+ getStats(): {
100
+ pendingOperations: number;
101
+ isSyncing: boolean;
102
+ partitionsTracked: number;
103
+ };
104
+ /**
105
+ * Clear sync queue
106
+ */
107
+ clearQueue(): void;
108
+ private shouldSync;
109
+ private queueOperation;
110
+ }
111
+ /**
112
+ * Factory function to create a MemorySyncAdapter
113
+ */
114
+ export declare function createMemorySyncAdapter(config: MemorySyncAdapterConfig): MemorySyncAdapter;
115
+ //# sourceMappingURL=MemorySyncAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemorySyncAdapter.d.ts","sourceRoot":"","sources":["../../../src/persistence/adapters/MemorySyncAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EACV,oBAAoB,EAEpB,iBAAiB,EAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAMrG;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,0CAA0C;IAC1C,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,qCAAqC;IACrC,aAAa,EAAE,kBAAkB,CAAC;IAClC,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAiBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoC;IAC3D,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,uBAAuB;IAmB3C;;OAEG;IACG,GAAG,CACP,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,iBAAiB,EACxB,SAAS,SAAY,EACrB,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,iBAAiB,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,GACA,OAAO,CAAC,IAAI,CAAC;IAwChB;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAyBhF;;OAEG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB/D;;OAEG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,SAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAS/D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IA+CzD;;OAEG;IACG,eAAe,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuB1D;;;OAGG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAWtC;;OAEG;IACH,QAAQ,IAAI;QACV,iBAAiB,EAAE,MAAM,CAAC;QAC1B,SAAS,EAAE,OAAO,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;KAC3B;IAQD;;OAEG;IACH,UAAU,IAAI,IAAI;IAQlB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,cAAc;CAkBvB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,uBAAuB,GAC9B,iBAAiB,CAEnB"}