@lantanios/agentic-server 0.1.1 → 0.2.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.
package/dist/config.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare const config: {
2
2
  port: number;
3
3
  mongoUri: string;
4
+ redisUrl: string;
4
5
  openaiApiKey: string;
5
6
  corsOrigins: string[];
6
7
  audio: {
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;CAuBlB,CAAC;AAEF,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAWzC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;CA0BlB,CAAC;AAEF,wBAAgB,cAAc,IAAI,MAAM,EAAE,CAWzC"}
package/dist/config.js CHANGED
@@ -11,6 +11,8 @@ exports.config = {
11
11
  port: parseInt(process.env.PORT || '3847', 10),
12
12
  // MongoDB
13
13
  mongoUri: process.env.MONGODB_URI || '',
14
+ // Redis (optional — system degrades gracefully without it)
15
+ redisUrl: process.env.REDIS_URL || '',
14
16
  // OpenAI (for embeddings)
15
17
  openaiApiKey: process.env.OPENAI_API_KEY || '',
16
18
  // CORS
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AA4BA,wCAWC;AAvCD,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEH,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC;IAE9C,UAAU;IACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;IAEvC,0BAA0B;IAC1B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;IAE9C,OAAO;IACP,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAE9E,kBAAkB;IAClB,KAAK,EAAE;QACL,GAAG,EAAE;YACH,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,uBAAuB;YACxE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;SACnD;QACD,GAAG,EAAE;YACH,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,uBAAuB;YACxE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;SAC/C;KACF;CACF,CAAC;AAEF,SAAgB,cAAc;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,cAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,cAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;;AA+BA,wCAWC;AA1CD,oDAA4B;AAC5B,gBAAM,CAAC,MAAM,EAAE,CAAC;AAEH,QAAA,MAAM,GAAG;IACpB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,EAAE,EAAE,CAAC;IAE9C,UAAU;IACV,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE;IAEvC,2DAA2D;IAC3D,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;IAErC,0BAA0B;IAC1B,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;IAE9C,OAAO;IACP,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC;IAE9E,kBAAkB;IAClB,KAAK,EAAE;QACL,GAAG,EAAE;YACH,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,uBAAuB;YACxE,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE;SACnD;QACD,GAAG,EAAE;YACH,aAAa,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,uBAAuB;YACxE,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE;SAC/C;KACF;CACF,CAAC;AAEF,SAAgB,cAAc;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC,cAAM,CAAC,QAAQ,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,cAAM,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAOnC,QAAA,MAAM,GAAG,EAAE,WAAuB,CAAC;AAInC,QAAA,MAAM,UAAU,oGAAoB,CAAC;AAErC,QAAA,MAAM,EAAE,+HAMN,CAAC;AAwHH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAQnC,QAAA,MAAM,GAAG,EAAE,WAAuB,CAAC;AAInC,QAAA,MAAM,UAAU,oGAAoB,CAAC;AAErC,QAAA,MAAM,EAAE,+HAMN,CAAC;AAiJH,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC"}
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ const mongoose_1 = __importDefault(require("mongoose"));
12
12
  const config_1 = require("./config");
13
13
  const namespaces_1 = require("./namespaces");
14
14
  const agentic_audio_1 = require("@lantanios/agentic-audio");
15
+ const agentic_redis_1 = require("@lantanios/agentic-redis");
15
16
  const app = (0, express_1.default)();
16
17
  exports.app = app;
17
18
  app.use((0, cors_1.default)({ origin: config_1.config.corsOrigins }));
@@ -77,10 +78,19 @@ function createAudioService() {
77
78
  // Health check
78
79
  app.get('/health', async (_req, res) => {
79
80
  const mongoStatus = mongoose_1.default.connection.readyState === 1 ? 'connected' : 'disconnected';
81
+ let redisHealth = { connected: false, latencyMs: null };
82
+ try {
83
+ redisHealth = await (0, agentic_redis_1.checkRedisHealth)();
84
+ }
85
+ catch {
86
+ // Redis not available
87
+ }
80
88
  res.json({
81
89
  status: 'ok',
82
90
  timestamp: new Date().toISOString(),
83
91
  mongodb: mongoStatus,
92
+ redis: redisHealth.connected ? 'connected' : 'disconnected',
93
+ redisLatencyMs: redisHealth.latencyMs,
84
94
  sockets: io.engine.clientsCount,
85
95
  });
86
96
  });
@@ -114,20 +124,38 @@ async function start() {
114
124
  console.error('✗ MongoDB connection failed:', err);
115
125
  }
116
126
  }
127
+ // Connect to Redis (optional — degrades gracefully)
128
+ if (config_1.config.redisUrl) {
129
+ try {
130
+ (0, agentic_redis_1.initRedis)({ url: config_1.config.redisUrl });
131
+ await (0, agentic_redis_1.connectRedis)();
132
+ console.log('✓ Connected to Redis');
133
+ }
134
+ catch (err) {
135
+ console.warn('✗ Redis connection failed (continuing without):', err.message);
136
+ }
137
+ }
138
+ else {
139
+ console.log('⊘ Redis not configured (set REDIS_URL to enable caching)');
140
+ }
117
141
  // Create audio service
118
142
  const audioService = createAudioService();
119
143
  // Setup Socket.IO namespaces
120
144
  (0, namespaces_1.setupMemoryNamespace)(io.of('/memory'));
121
145
  (0, namespaces_1.setupAudioNamespace)(io.of('/audio'), { audioService });
122
146
  (0, namespaces_1.setupEventsNamespace)(io.of('/events'));
147
+ (0, namespaces_1.setupContextNamespace)(io.of('/context'));
148
+ (0, namespaces_1.setupSyncNamespace)(io.of('/sync'));
123
149
  console.log('✓ Socket.IO namespaces configured');
124
150
  // Start server
125
151
  httpServer.listen(config_1.config.port, () => {
126
152
  console.log(`\n✓ @lantanios/agentic-server running on http://localhost:${config_1.config.port}`);
127
153
  console.log('\nNamespaces:');
128
- console.log(' /memory - Memory CRUD + vector search');
129
- console.log(' /audio - STT/TTS streaming');
130
- console.log(' /events - Pub/sub + direct messaging');
154
+ console.log(' /memory - Memory CRUD + vector search');
155
+ console.log(' /context - Context assembly + goals + search');
156
+ console.log(' /sync - Bidirectional SQLite MongoDB sync');
157
+ console.log(' /audio - STT/TTS streaming');
158
+ console.log(' /events - Pub/sub + direct messaging');
131
159
  console.log('\nREST endpoints:');
132
160
  console.log(' GET /health - Health check');
133
161
  console.log(' GET /providers - Audio provider status');
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * /context Namespace
3
+ *
4
+ * Context assembly, search, goal management, and state tracking
5
+ * via Socket.IO. Central coordination point for the Context Engine.
6
+ */
7
+ import { Namespace } from 'socket.io';
8
+ export declare function setupContextNamespace(io: Namespace): void;
9
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/namespaces/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAU,MAAM,WAAW,CAAC;AAqB9C,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,SAAS,QA8PlD"}
@@ -0,0 +1,247 @@
1
+ "use strict";
2
+ /**
3
+ * /context Namespace
4
+ *
5
+ * Context assembly, search, goal management, and state tracking
6
+ * via Socket.IO. Central coordination point for the Context Engine.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.setupContextNamespace = setupContextNamespace;
10
+ const agentic_memory_1 = require("@lantanios/agentic-memory");
11
+ const agentic_memory_2 = require("@lantanios/agentic-memory");
12
+ const agentic_memory_3 = require("@lantanios/agentic-memory");
13
+ function getAgentId(socket) {
14
+ return socket.data.agentId;
15
+ }
16
+ function setupContextNamespace(io) {
17
+ io.use((socket, next) => {
18
+ const agentId = socket.handshake.auth.agentId;
19
+ if (!agentId) {
20
+ return next(new Error('agentId is required'));
21
+ }
22
+ socket.data.agentId = agentId;
23
+ next();
24
+ });
25
+ io.on('connection', (socket) => {
26
+ const agentId = getAgentId(socket);
27
+ console.log(`[context] Agent connected: ${agentId}`);
28
+ // =========================================================================
29
+ // Search
30
+ // =========================================================================
31
+ /**
32
+ * search:memories — Atlas Vector Search on memories collection
33
+ */
34
+ socket.on('search:memories', async (data, callback) => {
35
+ try {
36
+ const results = await (0, agentic_memory_1.vectorSearch)({
37
+ agentId,
38
+ query: data.query,
39
+ type: data.type,
40
+ limit: data.limit,
41
+ minScore: data.minScore,
42
+ });
43
+ callback({ success: true, results });
44
+ }
45
+ catch (error) {
46
+ callback({ success: false, error: error.message });
47
+ }
48
+ });
49
+ /**
50
+ * search:summaries — Atlas Vector Search on conversationSummaries
51
+ */
52
+ socket.on('search:summaries', async (data, callback) => {
53
+ try {
54
+ const results = await (0, agentic_memory_2.searchSummaries)({
55
+ agentId,
56
+ query: data.query,
57
+ limit: data.limit,
58
+ minScore: data.minScore,
59
+ });
60
+ callback({ success: true, results });
61
+ }
62
+ catch (error) {
63
+ callback({ success: false, error: error.message });
64
+ }
65
+ });
66
+ /**
67
+ * recall — Hybrid recall: important + recent + semantic
68
+ */
69
+ socket.on('recall', async (data, callback) => {
70
+ try {
71
+ const [memories, context] = await Promise.all([
72
+ (0, agentic_memory_1.recall)({
73
+ agentId,
74
+ context: data.context,
75
+ limit: data.limit,
76
+ }),
77
+ (0, agentic_memory_2.recallContext)({
78
+ agentId,
79
+ sessionId: data.sessionId,
80
+ context: data.context,
81
+ limit: data.summaryLimit || 5,
82
+ }),
83
+ ]);
84
+ callback({
85
+ success: true,
86
+ memories: memories.memories,
87
+ breakdown: memories.breakdown,
88
+ summaries: context,
89
+ });
90
+ }
91
+ catch (error) {
92
+ callback({ success: false, error: error.message });
93
+ }
94
+ });
95
+ // =========================================================================
96
+ // Compression / Storage
97
+ // =========================================================================
98
+ /**
99
+ * compress:store — Store summary + extracted facts
100
+ */
101
+ socket.on('compress:store', async (data, callback) => {
102
+ try {
103
+ const summary = await (0, agentic_memory_2.createSummary)({
104
+ sessionId: data.sessionId,
105
+ agentId,
106
+ summary: data.summary,
107
+ sections: data.sections,
108
+ messagesDigested: data.messagesDigested,
109
+ tokensBefore: data.tokensBefore,
110
+ tokensAfter: data.tokensAfter,
111
+ triggerReason: data.triggerReason,
112
+ });
113
+ // Extract and store facts if provided
114
+ if (data.extractedFacts && Array.isArray(data.extractedFacts)) {
115
+ const factPromises = data.extractedFacts.map((fact) => (0, agentic_memory_1.createMemory)({
116
+ agentId,
117
+ type: (fact.type || 'fact'),
118
+ content: fact.content,
119
+ metadata: fact.metadata,
120
+ }).catch(err => {
121
+ console.warn('[context] Failed to store extracted fact:', err.message);
122
+ return null;
123
+ }));
124
+ await Promise.all(factPromises);
125
+ }
126
+ callback({ success: true, summary });
127
+ }
128
+ catch (error) {
129
+ callback({ success: false, error: error.message });
130
+ }
131
+ });
132
+ // =========================================================================
133
+ // State Management
134
+ // =========================================================================
135
+ /**
136
+ * state:get — Get context state for session
137
+ */
138
+ socket.on('state:get', async (data, callback) => {
139
+ try {
140
+ const state = await (0, agentic_memory_2.getContextState)(agentId, data.sessionId);
141
+ callback({ success: true, state });
142
+ }
143
+ catch (error) {
144
+ callback({ success: false, error: error.message });
145
+ }
146
+ });
147
+ /**
148
+ * state:update — Update context state
149
+ */
150
+ socket.on('state:update', async (data, callback) => {
151
+ try {
152
+ const state = await (0, agentic_memory_2.updateContextState)({
153
+ sessionId: data.sessionId,
154
+ agentId,
155
+ tokensUsed: data.tokensUsed,
156
+ contextWindow: data.contextWindow,
157
+ modelName: data.modelName,
158
+ messagesCount: data.messagesCount,
159
+ });
160
+ callback({ success: true, state });
161
+ }
162
+ catch (error) {
163
+ callback({ success: false, error: error.message });
164
+ }
165
+ });
166
+ // =========================================================================
167
+ // Goals
168
+ // =========================================================================
169
+ /**
170
+ * goals:get — Get active goals
171
+ */
172
+ socket.on('goals:get', async (data, callback) => {
173
+ try {
174
+ const filter = {
175
+ agentId: agentId.toLowerCase(),
176
+ };
177
+ if (data?.sessionKey)
178
+ filter.sessionKey = data.sessionKey;
179
+ if (data?.status) {
180
+ filter.status = data.status;
181
+ }
182
+ else {
183
+ filter.status = { $in: ['active', 'blocked'] };
184
+ }
185
+ const goals = await agentic_memory_3.Goal.find(filter)
186
+ .sort({ priority: -1, createdAt: -1 })
187
+ .limit(data?.limit || 20)
188
+ .lean();
189
+ callback({ success: true, goals });
190
+ }
191
+ catch (error) {
192
+ callback({ success: false, error: error.message });
193
+ }
194
+ });
195
+ /**
196
+ * goals:update — Update goal status
197
+ */
198
+ socket.on('goals:update', async (data, callback) => {
199
+ try {
200
+ const updates = {};
201
+ if (data.status)
202
+ updates.status = data.status;
203
+ if (data.priority !== undefined)
204
+ updates.priority = data.priority;
205
+ if (data.description)
206
+ updates.description = data.description;
207
+ if (data.blockedBy)
208
+ updates.blockedBy = data.blockedBy;
209
+ if (data.status === 'completed')
210
+ updates.completedAt = new Date();
211
+ const goal = await agentic_memory_3.Goal.findOneAndUpdate({ _id: data.goalId, agentId: agentId.toLowerCase() }, { $set: updates }, { new: true }).lean();
212
+ if (!goal) {
213
+ return callback({ success: false, error: 'Goal not found' });
214
+ }
215
+ callback({ success: true, goal });
216
+ }
217
+ catch (error) {
218
+ callback({ success: false, error: error.message });
219
+ }
220
+ });
221
+ /**
222
+ * goals:create — Create a new goal
223
+ */
224
+ socket.on('goals:create', async (data, callback) => {
225
+ try {
226
+ const goal = new agentic_memory_3.Goal({
227
+ agentId: agentId.toLowerCase(),
228
+ sessionKey: data.sessionKey,
229
+ parentGoalId: data.parentGoalId,
230
+ description: data.description,
231
+ status: 'active',
232
+ priority: data.priority || 3,
233
+ metadata: data.metadata || {},
234
+ });
235
+ await goal.save();
236
+ callback({ success: true, goal: goal.toObject() });
237
+ }
238
+ catch (error) {
239
+ callback({ success: false, error: error.message });
240
+ }
241
+ });
242
+ socket.on('disconnect', () => {
243
+ console.log(`[context] Agent disconnected: ${agentId}`);
244
+ });
245
+ });
246
+ }
247
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/namespaces/context.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export { setupMemoryNamespace } from './memory';
2
2
  export { setupAudioNamespace } from './audio';
3
3
  export { setupEventsNamespace } from './events';
4
+ export { setupContextNamespace } from './context';
5
+ export { setupSyncNamespace } from './sync';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/namespaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/namespaces/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,10 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setupEventsNamespace = exports.setupAudioNamespace = exports.setupMemoryNamespace = void 0;
3
+ exports.setupSyncNamespace = exports.setupContextNamespace = exports.setupEventsNamespace = exports.setupAudioNamespace = exports.setupMemoryNamespace = void 0;
4
4
  var memory_1 = require("./memory");
5
5
  Object.defineProperty(exports, "setupMemoryNamespace", { enumerable: true, get: function () { return memory_1.setupMemoryNamespace; } });
6
6
  var audio_1 = require("./audio");
7
7
  Object.defineProperty(exports, "setupAudioNamespace", { enumerable: true, get: function () { return audio_1.setupAudioNamespace; } });
8
8
  var events_1 = require("./events");
9
9
  Object.defineProperty(exports, "setupEventsNamespace", { enumerable: true, get: function () { return events_1.setupEventsNamespace; } });
10
+ var context_1 = require("./context");
11
+ Object.defineProperty(exports, "setupContextNamespace", { enumerable: true, get: function () { return context_1.setupContextNamespace; } });
12
+ var sync_1 = require("./sync");
13
+ Object.defineProperty(exports, "setupSyncNamespace", { enumerable: true, get: function () { return sync_1.setupSyncNamespace; } });
10
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/namespaces/index.ts"],"names":[],"mappings":";;;AAAA,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,iCAA8C;AAArC,4GAAA,mBAAmB,OAAA;AAC5B,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/namespaces/index.ts"],"names":[],"mappings":";;;AAAA,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,iCAA8C;AAArC,4GAAA,mBAAmB,OAAA;AAC5B,mCAAgD;AAAvC,8GAAA,oBAAoB,OAAA;AAC7B,qCAAkD;AAAzC,gHAAA,qBAAqB,OAAA;AAC9B,+BAA4C;AAAnC,0GAAA,kBAAkB,OAAA"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * /sync Namespace
3
+ *
4
+ * Bidirectional sync between local SQLite caches and MongoDB source of truth.
5
+ *
6
+ * Events:
7
+ * sync:pull — Get memories updated since timestamp
8
+ * sync:push — Push locally-created memories to MongoDB
9
+ * sync:status — Get sync state
10
+ */
11
+ import { Namespace } from 'socket.io';
12
+ export declare function setupSyncNamespace(io: Namespace): void;
13
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../src/namespaces/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAU,MAAM,WAAW,CAAC;AAW9C,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,SAAS,QAoI/C"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ /**
3
+ * /sync Namespace
4
+ *
5
+ * Bidirectional sync between local SQLite caches and MongoDB source of truth.
6
+ *
7
+ * Events:
8
+ * sync:pull — Get memories updated since timestamp
9
+ * sync:push — Push locally-created memories to MongoDB
10
+ * sync:status — Get sync state
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.setupSyncNamespace = setupSyncNamespace;
14
+ const agentic_memory_1 = require("@lantanios/agentic-memory");
15
+ function getAgentId(socket) {
16
+ return socket.data.agentId;
17
+ }
18
+ function setupSyncNamespace(io) {
19
+ io.use((socket, next) => {
20
+ const agentId = socket.handshake.auth.agentId;
21
+ if (!agentId) {
22
+ return next(new Error('agentId is required'));
23
+ }
24
+ socket.data.agentId = agentId;
25
+ next();
26
+ });
27
+ io.on('connection', (socket) => {
28
+ const agentId = getAgentId(socket);
29
+ console.log(`[sync] Agent connected: ${agentId}`);
30
+ /**
31
+ * sync:pull — Get all memories updated since a given timestamp.
32
+ * Used by clients to pull changes from MongoDB into their local SQLite cache.
33
+ */
34
+ socket.on('sync:pull', async (data, callback) => {
35
+ try {
36
+ const since = data.since ? new Date(data.since) : new Date(0);
37
+ const limit = data.limit || 500;
38
+ const memories = await agentic_memory_1.Memory.find({
39
+ agentId: agentId.toLowerCase(),
40
+ updatedAt: { $gt: since },
41
+ })
42
+ .sort({ updatedAt: 1 })
43
+ .limit(limit)
44
+ .lean();
45
+ // Get the watermark (latest updatedAt in the batch)
46
+ const watermark = memories.length > 0
47
+ ? memories[memories.length - 1].updatedAt
48
+ : since;
49
+ callback({
50
+ success: true,
51
+ memories,
52
+ count: memories.length,
53
+ watermark: watermark.toISOString(),
54
+ hasMore: memories.length === limit,
55
+ });
56
+ }
57
+ catch (error) {
58
+ callback({ success: false, error: error.message });
59
+ }
60
+ });
61
+ /**
62
+ * sync:push — Push locally-created memories to MongoDB.
63
+ * Used when client creates memories offline or for bulk upload.
64
+ */
65
+ socket.on('sync:push', async (data, callback) => {
66
+ try {
67
+ if (!Array.isArray(data.memories)) {
68
+ return callback({ success: false, error: 'memories must be an array' });
69
+ }
70
+ const results = [];
71
+ for (const mem of data.memories) {
72
+ try {
73
+ const created = await (0, agentic_memory_1.createMemory)({
74
+ agentId,
75
+ type: mem.type,
76
+ content: mem.content,
77
+ metadata: mem.metadata,
78
+ expiresAt: mem.expiresAt ? new Date(mem.expiresAt) : undefined,
79
+ });
80
+ results.push({
81
+ localId: mem.localId || mem._id || '',
82
+ remoteId: created._id,
83
+ success: true,
84
+ });
85
+ }
86
+ catch (err) {
87
+ results.push({
88
+ localId: mem.localId || mem._id || '',
89
+ remoteId: '',
90
+ success: false,
91
+ error: err.message,
92
+ });
93
+ }
94
+ }
95
+ const succeeded = results.filter((r) => r.success).length;
96
+ const failed = results.filter((r) => !r.success).length;
97
+ callback({
98
+ success: true,
99
+ results,
100
+ summary: { total: results.length, succeeded, failed },
101
+ });
102
+ }
103
+ catch (error) {
104
+ callback({ success: false, error: error.message });
105
+ }
106
+ });
107
+ /**
108
+ * sync:status — Get sync state information.
109
+ */
110
+ socket.on('sync:status', async (callback) => {
111
+ try {
112
+ const totalMemories = await agentic_memory_1.Memory.countDocuments({
113
+ agentId: agentId.toLowerCase(),
114
+ deleted: false,
115
+ });
116
+ const latestMemory = await agentic_memory_1.Memory.findOne({
117
+ agentId: agentId.toLowerCase(),
118
+ })
119
+ .sort({ updatedAt: -1 })
120
+ .lean();
121
+ callback({
122
+ success: true,
123
+ status: {
124
+ agentId,
125
+ totalMemories,
126
+ latestUpdate: latestMemory?.updatedAt?.toISOString() || null,
127
+ serverTime: new Date().toISOString(),
128
+ },
129
+ });
130
+ }
131
+ catch (error) {
132
+ callback({ success: false, error: error.message });
133
+ }
134
+ });
135
+ socket.on('disconnect', () => {
136
+ console.log(`[sync] Agent disconnected: ${agentId}`);
137
+ });
138
+ });
139
+ }
140
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/namespaces/sync.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAaH,gDAoIC;AA9ID,8DAImC;AAEnC,SAAS,UAAU,CAAC,MAAc;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,OAAiB,CAAC;AACvC,CAAC;AAED,SAAgB,kBAAkB,CAAC,EAAa;IAC9C,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;QAC9C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC9B,IAAI,EAAE,CAAC;IACT,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;QAElD;;;WAGG;QACH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YAC9C,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC;gBAEhC,MAAM,QAAQ,GAAG,MAAM,uBAAM,CAAC,IAAI,CAAC;oBACjC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;oBAC9B,SAAS,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE;iBAC1B,CAAC;qBACC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;qBACtB,KAAK,CAAC,KAAK,CAAC;qBACZ,IAAI,EAAE,CAAC;gBAEV,oDAAoD;gBACpD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;oBACnC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS;oBACzC,CAAC,CAAC,KAAK,CAAC;gBAEV,QAAQ,CAAC;oBACP,OAAO,EAAE,IAAI;oBACb,QAAQ;oBACR,KAAK,EAAE,QAAQ,CAAC,MAAM;oBACtB,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE;oBAClC,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,KAAK;iBACnC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH;;;WAGG;QACH,MAAM,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;YAC9C,IAAI,CAAC;gBACH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAClC,OAAO,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;gBAC1E,CAAC;gBAED,MAAM,OAAO,GAAmF,EAAE,CAAC;gBAEnG,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAChC,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,MAAM,IAAA,6BAAY,EAAC;4BACjC,OAAO;4BACP,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;4BACtB,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;yBAC/D,CAAC,CAAC;wBAEH,OAAO,CAAC,IAAI,CAAC;4BACX,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE;4BACrC,QAAQ,EAAE,OAAO,CAAC,GAAG;4BACrB,OAAO,EAAE,IAAI;yBACd,CAAC,CAAC;oBACL,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,CAAC,IAAI,CAAC;4BACX,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE;4BACrC,QAAQ,EAAE,EAAE;4BACZ,OAAO,EAAE,KAAK;4BACd,KAAK,EAAG,GAAa,CAAC,OAAO;yBAC9B,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;gBAC1D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;gBAExD,QAAQ,CAAC;oBACP,OAAO,EAAE,IAAI;oBACb,OAAO;oBACP,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;iBACtD,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH;;WAEG;QACH,MAAM,CAAC,EAAE,CAAC,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;YAC1C,IAAI,CAAC;gBACH,MAAM,aAAa,GAAG,MAAM,uBAAM,CAAC,cAAc,CAAC;oBAChD,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;oBAC9B,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBAEH,MAAM,YAAY,GAAG,MAAM,uBAAM,CAAC,OAAO,CAAC;oBACxC,OAAO,EAAE,OAAO,CAAC,WAAW,EAAE;iBAC/B,CAAC;qBACC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;qBACvB,IAAI,EAAE,CAAC;gBAEV,QAAQ,CAAC;oBACP,OAAO,EAAE,IAAI;oBACb,MAAM,EAAE;wBACN,OAAO;wBACP,aAAa;wBACb,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,IAAI;wBAC5D,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;qBACrC;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAChE,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}