agentdb 1.5.8 โ†’ 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +11 -11
  2. package/dist/agentdb.min.js +4 -4
  3. package/dist/cli/agentdb-cli.d.ts +29 -0
  4. package/dist/cli/agentdb-cli.d.ts.map +1 -1
  5. package/dist/cli/agentdb-cli.js +1009 -34
  6. package/dist/cli/agentdb-cli.js.map +1 -1
  7. package/dist/controllers/ContextSynthesizer.d.ts +65 -0
  8. package/dist/controllers/ContextSynthesizer.d.ts.map +1 -0
  9. package/dist/controllers/ContextSynthesizer.js +208 -0
  10. package/dist/controllers/ContextSynthesizer.js.map +1 -0
  11. package/dist/controllers/MMRDiversityRanker.d.ts +50 -0
  12. package/dist/controllers/MMRDiversityRanker.d.ts.map +1 -0
  13. package/dist/controllers/MMRDiversityRanker.js +130 -0
  14. package/dist/controllers/MMRDiversityRanker.js.map +1 -0
  15. package/dist/controllers/MetadataFilter.d.ts +70 -0
  16. package/dist/controllers/MetadataFilter.d.ts.map +1 -0
  17. package/dist/controllers/MetadataFilter.js +243 -0
  18. package/dist/controllers/MetadataFilter.js.map +1 -0
  19. package/dist/controllers/QUICClient.d.ts +109 -0
  20. package/dist/controllers/QUICClient.d.ts.map +1 -0
  21. package/dist/controllers/QUICClient.js +299 -0
  22. package/dist/controllers/QUICClient.js.map +1 -0
  23. package/dist/controllers/QUICServer.d.ts +121 -0
  24. package/dist/controllers/QUICServer.d.ts.map +1 -0
  25. package/dist/controllers/QUICServer.js +383 -0
  26. package/dist/controllers/QUICServer.js.map +1 -0
  27. package/dist/controllers/SyncCoordinator.d.ts +120 -0
  28. package/dist/controllers/SyncCoordinator.d.ts.map +1 -0
  29. package/dist/controllers/SyncCoordinator.js +441 -0
  30. package/dist/controllers/SyncCoordinator.js.map +1 -0
  31. package/dist/controllers/WASMVectorSearch.d.ts.map +1 -1
  32. package/dist/controllers/WASMVectorSearch.js +10 -2
  33. package/dist/controllers/WASMVectorSearch.js.map +1 -1
  34. package/dist/controllers/index.d.ts +12 -0
  35. package/dist/controllers/index.d.ts.map +1 -1
  36. package/dist/controllers/index.js +6 -0
  37. package/dist/controllers/index.js.map +1 -1
  38. package/dist/db-fallback.d.ts.map +1 -1
  39. package/dist/db-fallback.js +14 -11
  40. package/dist/db-fallback.js.map +1 -1
  41. package/dist/examples/quic-sync-example.d.ts +9 -0
  42. package/dist/examples/quic-sync-example.d.ts.map +1 -0
  43. package/dist/examples/quic-sync-example.js +169 -0
  44. package/dist/examples/quic-sync-example.js.map +1 -0
  45. package/dist/types/quic.d.ts +518 -0
  46. package/dist/types/quic.d.ts.map +1 -0
  47. package/dist/types/quic.js +272 -0
  48. package/dist/types/quic.js.map +1 -0
  49. package/package.json +9 -3
  50. package/src/browser-entry.js +41 -6
  51. package/src/cli/agentdb-cli.ts +1114 -33
  52. package/src/controllers/ContextSynthesizer.ts +285 -0
  53. package/src/controllers/MMRDiversityRanker.ts +187 -0
  54. package/src/controllers/MetadataFilter.ts +280 -0
  55. package/src/controllers/QUICClient.ts +413 -0
  56. package/src/controllers/QUICServer.ts +498 -0
  57. package/src/controllers/SyncCoordinator.ts +597 -0
  58. package/src/controllers/WASMVectorSearch.ts +11 -2
  59. package/src/controllers/index.ts +12 -0
  60. package/src/db-fallback.ts +13 -10
  61. package/src/examples/quic-sync-example.ts +198 -0
  62. package/src/types/quic.ts +772 -0
@@ -0,0 +1,198 @@
1
+ /**
2
+ * QUIC Synchronization Example
3
+ *
4
+ * Demonstrates how to use QUICServer, QUICClient, and SyncCoordinator
5
+ * for bidirectional synchronization between AgentDB instances.
6
+ */
7
+
8
+ import { createDatabase } from '../db-fallback.js';
9
+ import {
10
+ QUICServer,
11
+ QUICClient,
12
+ SyncCoordinator,
13
+ ReflexionMemory,
14
+ SkillLibrary,
15
+ EmbeddingService,
16
+ } from '../controllers/index.js';
17
+
18
+ async function exampleQUICSync() {
19
+ console.log('๐Ÿš€ QUIC Synchronization Example\n');
20
+
21
+ // Initialize two database instances (simulating local and remote)
22
+ const localDB = createDatabase('./local-agent.db');
23
+ const remoteDB = createDatabase('./remote-agent.db');
24
+
25
+ // Initialize embedding services
26
+ const localEmbedder = new EmbeddingService({
27
+ model: 'Xenova/all-MiniLM-L6-v2',
28
+ dimension: 384,
29
+ provider: 'transformers',
30
+ });
31
+ const remoteEmbedder = new EmbeddingService({
32
+ model: 'Xenova/all-MiniLM-L6-v2',
33
+ dimension: 384,
34
+ provider: 'transformers',
35
+ });
36
+
37
+ // Initialize memory controllers
38
+ const localReflexion = new ReflexionMemory(localDB, localEmbedder);
39
+ const remoteReflexion = new ReflexionMemory(remoteDB, remoteEmbedder);
40
+ const remoteSkillLib = new SkillLibrary(remoteDB, remoteEmbedder);
41
+
42
+ try {
43
+ // ===== Setup Remote Server =====
44
+ console.log('๐Ÿ“ก Setting up remote QUIC server...');
45
+ const server = new QUICServer(remoteDB, {
46
+ host: '0.0.0.0',
47
+ port: 4433,
48
+ authToken: 'secret-token-123',
49
+ maxConnections: 10,
50
+ rateLimit: {
51
+ maxRequestsPerMinute: 60,
52
+ maxBytesPerMinute: 10 * 1024 * 1024,
53
+ },
54
+ });
55
+
56
+ await server.start();
57
+ console.log('โœ“ Server started\n');
58
+
59
+ // ===== Setup Local Client =====
60
+ console.log('๐Ÿ“ฑ Setting up local QUIC client...');
61
+ const client = new QUICClient({
62
+ serverHost: 'localhost',
63
+ serverPort: 4433,
64
+ authToken: 'secret-token-123',
65
+ maxRetries: 3,
66
+ retryDelayMs: 1000,
67
+ timeoutMs: 30000,
68
+ poolSize: 5,
69
+ });
70
+
71
+ await client.connect();
72
+ console.log('โœ“ Client connected\n');
73
+
74
+ // Test ping
75
+ console.log('๐Ÿ“ Testing connection...');
76
+ const pingResult = await client.ping();
77
+ console.log(`โœ“ Ping: ${pingResult.latencyMs}ms\n`);
78
+
79
+ // ===== Add some data to remote =====
80
+ console.log('๐Ÿ“ Adding test data to remote database...');
81
+ await remoteReflexion.storeEpisode({
82
+ sessionId: 'test-session',
83
+ task: 'Calculate fibonacci',
84
+ input: 'n=10',
85
+ output: '55',
86
+ critique: 'Efficient implementation',
87
+ reward: 1.0,
88
+ success: true,
89
+ latencyMs: 150,
90
+ tokensUsed: 200,
91
+ tags: ['math', 'algorithm'],
92
+ });
93
+
94
+ await remoteSkillLib.createSkill({
95
+ name: 'fibonacci',
96
+ description: 'Calculate fibonacci numbers',
97
+ signature: {
98
+ inputs: { n: 'number' },
99
+ outputs: { result: 'number' },
100
+ },
101
+ code: 'function fib(n) { ... }',
102
+ successRate: 1.0,
103
+ uses: 5,
104
+ avgReward: 0.95,
105
+ avgLatencyMs: 100,
106
+ });
107
+ console.log('โœ“ Test data added\n');
108
+
109
+ // ===== Setup Sync Coordinator =====
110
+ console.log('๐Ÿ”„ Setting up sync coordinator...');
111
+ const coordinator = new SyncCoordinator({
112
+ db: localDB,
113
+ client: client,
114
+ server: server,
115
+ conflictStrategy: 'latest-wins',
116
+ batchSize: 100,
117
+ autoSync: false,
118
+ });
119
+
120
+ // ===== Perform Manual Sync =====
121
+ console.log('๐Ÿ”„ Starting synchronization...\n');
122
+ const syncReport = await coordinator.sync((progress) => {
123
+ console.log(` [${progress.phase}] ${progress.message || ''}`);
124
+ if (progress.itemType) {
125
+ console.log(` Syncing ${progress.itemType}: ${progress.current}/${progress.total}`);
126
+ }
127
+ });
128
+
129
+ console.log('\n๐Ÿ“Š Sync Report:');
130
+ console.log(` Success: ${syncReport.success}`);
131
+ console.log(` Duration: ${syncReport.durationMs}ms`);
132
+ console.log(` Items pulled: ${syncReport.itemsPulled}`);
133
+ console.log(` Items pushed: ${syncReport.itemsPushed}`);
134
+ console.log(` Conflicts resolved: ${syncReport.conflictsResolved}`);
135
+ console.log(` Bytes transferred: ${syncReport.bytesTransferred}`);
136
+ if (syncReport.errors.length > 0) {
137
+ console.log(` Errors: ${syncReport.errors.join(', ')}`);
138
+ }
139
+
140
+ // ===== Check Sync State =====
141
+ console.log('\n๐Ÿ“Š Sync State:');
142
+ const state = coordinator.getSyncState();
143
+ console.log(` Last sync: ${new Date(state.lastSyncAt).toISOString()}`);
144
+ console.log(` Total items synced: ${state.totalItemsSynced}`);
145
+ console.log(` Total bytes synced: ${state.totalBytesSynced}`);
146
+ console.log(` Sync count: ${state.syncCount}`);
147
+
148
+ // ===== Server Status =====
149
+ console.log('\n๐Ÿ“ก Server Status:');
150
+ const serverStatus = server.getStatus();
151
+ console.log(` Running: ${serverStatus.isRunning}`);
152
+ console.log(` Active connections: ${serverStatus.activeConnections}`);
153
+ console.log(` Total requests: ${serverStatus.totalRequests}`);
154
+
155
+ // ===== Client Status =====
156
+ console.log('\n๐Ÿ“ฑ Client Status:');
157
+ const clientStatus = client.getStatus();
158
+ console.log(` Connected: ${clientStatus.isConnected}`);
159
+ console.log(` Pool size: ${clientStatus.poolSize}`);
160
+ console.log(` Active connections: ${clientStatus.activeConnections}`);
161
+ console.log(` Total requests: ${clientStatus.totalRequests}`);
162
+
163
+ // ===== Enable Auto-Sync =====
164
+ console.log('\n๐Ÿ”„ Testing auto-sync...');
165
+ coordinator['config'].autoSync = true;
166
+ coordinator['config'].syncIntervalMs = 5000; // 5 seconds
167
+ coordinator['startAutoSync']();
168
+ console.log('โœ“ Auto-sync enabled (5s interval)');
169
+
170
+ // Wait for one auto-sync cycle
171
+ await new Promise((resolve) => setTimeout(resolve, 6000));
172
+ coordinator.stopAutoSync();
173
+ console.log('โœ“ Auto-sync disabled');
174
+
175
+ // ===== Cleanup =====
176
+ console.log('\n๐Ÿงน Cleaning up...');
177
+ await client.disconnect();
178
+ await server.stop();
179
+ console.log('โœ“ Cleanup complete');
180
+
181
+ console.log('\nโœ… QUIC Sync example completed successfully!');
182
+ } catch (error) {
183
+ console.error('\nโŒ Error:', error);
184
+ throw error;
185
+ }
186
+ }
187
+
188
+ // Run example if executed directly
189
+ if (import.meta.url === `file://${process.argv[1]}`) {
190
+ exampleQUICSync()
191
+ .then(() => process.exit(0))
192
+ .catch((error) => {
193
+ console.error('Fatal error:', error);
194
+ process.exit(1);
195
+ });
196
+ }
197
+
198
+ export { exampleQUICSync };