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.
- package/CHANGELOG.md +105 -0
- package/README.md +1 -1
- package/dist/agents/BaseAgent.d.ts +128 -0
- package/dist/agents/BaseAgent.d.ts.map +1 -1
- package/dist/agents/BaseAgent.js +256 -0
- package/dist/agents/BaseAgent.js.map +1 -1
- package/dist/cli/commands/supabase/index.d.ts +20 -0
- package/dist/cli/commands/supabase/index.d.ts.map +1 -0
- package/dist/cli/commands/supabase/index.js +632 -0
- package/dist/cli/commands/supabase/index.js.map +1 -0
- package/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/core/memory/HNSWVectorMemory.js +1 -1
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +8 -8
- package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -1
- package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -1
- package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
- package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
- package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
- package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
- package/dist/mcp/handlers/ruvector/index.js +9 -0
- package/dist/mcp/handlers/ruvector/index.js.map +1 -0
- package/dist/mcp/server-instructions.d.ts +1 -1
- package/dist/mcp/server-instructions.js +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +100 -22
- package/dist/mcp/server.js.map +1 -1
- package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
- package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
- package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
- package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
- package/dist/nervous-system/adapters/CircadianController.js +882 -0
- package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
- package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
- package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
- package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
- package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
- package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
- package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
- package/dist/nervous-system/index.d.ts +25 -0
- package/dist/nervous-system/index.d.ts.map +1 -0
- package/dist/nervous-system/index.js +80 -0
- package/dist/nervous-system/index.js.map +1 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
- package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
- package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
- package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
- package/dist/nervous-system/integration/CircadianAgent.js +696 -0
- package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
- package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
- package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
- package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
- package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
- package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
- package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
- package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
- package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
- package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
- package/dist/nervous-system/integration/index.d.ts +22 -0
- package/dist/nervous-system/integration/index.d.ts.map +1 -0
- package/dist/nervous-system/integration/index.js +44 -0
- package/dist/nervous-system/integration/index.js.map +1 -0
- package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
- package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
- package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
- package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
- package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
- package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
- package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
- package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
- package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
- package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
- package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
- package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
- package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
- package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
- package/dist/nervous-system/persistence/index.d.ts +22 -0
- package/dist/nervous-system/persistence/index.d.ts.map +1 -0
- package/dist/nervous-system/persistence/index.js +45 -0
- package/dist/nervous-system/persistence/index.js.map +1 -0
- package/dist/nervous-system/wasm-loader.d.ts +52 -0
- package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
- package/dist/nervous-system/wasm-loader.js +188 -0
- package/dist/nervous-system/wasm-loader.js.map +1 -0
- package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
- package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/HybridPersistenceProvider.js +1086 -0
- package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
- package/dist/persistence/IPersistenceProvider.d.ts +657 -0
- package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/IPersistenceProvider.js +11 -0
- package/dist/persistence/IPersistenceProvider.js.map +1 -0
- package/dist/persistence/SupabaseConfig.d.ts +176 -0
- package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
- package/dist/persistence/SupabaseConfig.js +277 -0
- package/dist/persistence/SupabaseConfig.js.map +1 -0
- package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
- package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
- package/dist/persistence/SupabasePersistenceProvider.js +955 -0
- package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
- package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
- package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
- package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
- package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
- package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
- package/dist/persistence/adapters/index.d.ts +11 -0
- package/dist/persistence/adapters/index.d.ts.map +1 -0
- package/dist/persistence/adapters/index.js +20 -0
- package/dist/persistence/adapters/index.js.map +1 -0
- package/dist/persistence/index.d.ts +14 -0
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +36 -1
- package/dist/persistence/index.js.map +1 -1
- 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"}
|