@nxuss/lemma 0.1.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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +311 -0
  3. package/dist/cloud/KeyManager.d.ts +29 -0
  4. package/dist/cloud/KeyManager.d.ts.map +1 -0
  5. package/dist/cloud/KeyManager.js +142 -0
  6. package/dist/cloud/KeyManager.js.map +1 -0
  7. package/dist/cloud/TenantCache.d.ts +29 -0
  8. package/dist/cloud/TenantCache.d.ts.map +1 -0
  9. package/dist/cloud/TenantCache.js +162 -0
  10. package/dist/cloud/TenantCache.js.map +1 -0
  11. package/dist/cloud/index.d.ts +4 -0
  12. package/dist/cloud/index.d.ts.map +1 -0
  13. package/dist/cloud/index.js +23 -0
  14. package/dist/cloud/index.js.map +1 -0
  15. package/dist/cloud/server.d.ts +17 -0
  16. package/dist/cloud/server.d.ts.map +1 -0
  17. package/dist/cloud/server.js +189 -0
  18. package/dist/cloud/server.js.map +1 -0
  19. package/dist/cloud/types.d.ts +35 -0
  20. package/dist/cloud/types.d.ts.map +1 -0
  21. package/dist/cloud/types.js +14 -0
  22. package/dist/cloud/types.js.map +1 -0
  23. package/dist/config/index.d.ts +44 -0
  24. package/dist/config/index.d.ts.map +1 -0
  25. package/dist/config/index.js +161 -0
  26. package/dist/config/index.js.map +1 -0
  27. package/dist/consensus/ConsensusEngine.d.ts +119 -0
  28. package/dist/consensus/ConsensusEngine.d.ts.map +1 -0
  29. package/dist/consensus/ConsensusEngine.js +314 -0
  30. package/dist/consensus/ConsensusEngine.js.map +1 -0
  31. package/dist/consensus/ModelPool.d.ts +103 -0
  32. package/dist/consensus/ModelPool.d.ts.map +1 -0
  33. package/dist/consensus/ModelPool.js +276 -0
  34. package/dist/consensus/ModelPool.js.map +1 -0
  35. package/dist/consensus/index.d.ts +8 -0
  36. package/dist/consensus/index.d.ts.map +1 -0
  37. package/dist/consensus/index.js +13 -0
  38. package/dist/consensus/index.js.map +1 -0
  39. package/dist/core/AgentRegistry.d.ts +89 -0
  40. package/dist/core/AgentRegistry.d.ts.map +1 -0
  41. package/dist/core/AgentRegistry.js +264 -0
  42. package/dist/core/AgentRegistry.js.map +1 -0
  43. package/dist/core/DashboardBroadcaster.d.ts +67 -0
  44. package/dist/core/DashboardBroadcaster.d.ts.map +1 -0
  45. package/dist/core/DashboardBroadcaster.js +264 -0
  46. package/dist/core/DashboardBroadcaster.js.map +1 -0
  47. package/dist/core/OrchestrationEngine.d.ts +84 -0
  48. package/dist/core/OrchestrationEngine.d.ts.map +1 -0
  49. package/dist/core/OrchestrationEngine.js +455 -0
  50. package/dist/core/OrchestrationEngine.js.map +1 -0
  51. package/dist/core/SubconsciousEngine.d.ts +53 -0
  52. package/dist/core/SubconsciousEngine.d.ts.map +1 -0
  53. package/dist/core/SubconsciousEngine.js +273 -0
  54. package/dist/core/SubconsciousEngine.js.map +1 -0
  55. package/dist/core/WebSocketServer.d.ts +89 -0
  56. package/dist/core/WebSocketServer.d.ts.map +1 -0
  57. package/dist/core/WebSocketServer.js +416 -0
  58. package/dist/core/WebSocketServer.js.map +1 -0
  59. package/dist/core/index.d.ts +15 -0
  60. package/dist/core/index.d.ts.map +1 -0
  61. package/dist/core/index.js +24 -0
  62. package/dist/core/index.js.map +1 -0
  63. package/dist/core/router.d.ts +105 -0
  64. package/dist/core/router.d.ts.map +1 -0
  65. package/dist/core/router.js +420 -0
  66. package/dist/core/router.js.map +1 -0
  67. package/dist/embed/index.d.ts +153 -0
  68. package/dist/embed/index.d.ts.map +1 -0
  69. package/dist/embed/index.js +408 -0
  70. package/dist/embed/index.js.map +1 -0
  71. package/dist/embed.d.ts +11 -0
  72. package/dist/embed.d.ts.map +1 -0
  73. package/dist/embed.js +19 -0
  74. package/dist/embed.js.map +1 -0
  75. package/dist/index.d.ts +83 -0
  76. package/dist/index.d.ts.map +1 -0
  77. package/dist/index.js +176 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/protocol/flows.d.ts +126 -0
  80. package/dist/protocol/flows.d.ts.map +1 -0
  81. package/dist/protocol/flows.js +347 -0
  82. package/dist/protocol/flows.js.map +1 -0
  83. package/dist/protocol/iap.d.ts +54 -0
  84. package/dist/protocol/iap.d.ts.map +1 -0
  85. package/dist/protocol/iap.js +108 -0
  86. package/dist/protocol/iap.js.map +1 -0
  87. package/dist/protocol/index.d.ts +23 -0
  88. package/dist/protocol/index.d.ts.map +1 -0
  89. package/dist/protocol/index.js +45 -0
  90. package/dist/protocol/index.js.map +1 -0
  91. package/dist/protocol/types.d.ts +332 -0
  92. package/dist/protocol/types.d.ts.map +1 -0
  93. package/dist/protocol/types.js +57 -0
  94. package/dist/protocol/types.js.map +1 -0
  95. package/dist/protocol/utils.d.ts +130 -0
  96. package/dist/protocol/utils.d.ts.map +1 -0
  97. package/dist/protocol/utils.js +292 -0
  98. package/dist/protocol/utils.js.map +1 -0
  99. package/dist/protocol/validators.d.ts +54 -0
  100. package/dist/protocol/validators.d.ts.map +1 -0
  101. package/dist/protocol/validators.js +344 -0
  102. package/dist/protocol/validators.js.map +1 -0
  103. package/dist/security/AuthManager.d.ts +73 -0
  104. package/dist/security/AuthManager.d.ts.map +1 -0
  105. package/dist/security/AuthManager.js +102 -0
  106. package/dist/security/AuthManager.js.map +1 -0
  107. package/dist/security/MessageSanitizer.d.ts +51 -0
  108. package/dist/security/MessageSanitizer.d.ts.map +1 -0
  109. package/dist/security/MessageSanitizer.js +166 -0
  110. package/dist/security/MessageSanitizer.js.map +1 -0
  111. package/dist/security/RateLimiter.d.ts +46 -0
  112. package/dist/security/RateLimiter.d.ts.map +1 -0
  113. package/dist/security/RateLimiter.js +133 -0
  114. package/dist/security/RateLimiter.js.map +1 -0
  115. package/dist/security/SecurityMiddleware.d.ts +88 -0
  116. package/dist/security/SecurityMiddleware.d.ts.map +1 -0
  117. package/dist/security/SecurityMiddleware.js +146 -0
  118. package/dist/security/SecurityMiddleware.js.map +1 -0
  119. package/dist/security/index.d.ts +35 -0
  120. package/dist/security/index.d.ts.map +1 -0
  121. package/dist/security/index.js +42 -0
  122. package/dist/security/index.js.map +1 -0
  123. package/dist/speculative/PredictionEngine.d.ts +99 -0
  124. package/dist/speculative/PredictionEngine.d.ts.map +1 -0
  125. package/dist/speculative/PredictionEngine.js +291 -0
  126. package/dist/speculative/PredictionEngine.js.map +1 -0
  127. package/dist/speculative/SpeculativeCache.d.ts +117 -0
  128. package/dist/speculative/SpeculativeCache.d.ts.map +1 -0
  129. package/dist/speculative/SpeculativeCache.js +292 -0
  130. package/dist/speculative/SpeculativeCache.js.map +1 -0
  131. package/dist/speculative/SpeculativeEngine.d.ts +114 -0
  132. package/dist/speculative/SpeculativeEngine.d.ts.map +1 -0
  133. package/dist/speculative/SpeculativeEngine.js +244 -0
  134. package/dist/speculative/SpeculativeEngine.js.map +1 -0
  135. package/dist/speculative/WorkerPool.d.ts +109 -0
  136. package/dist/speculative/WorkerPool.d.ts.map +1 -0
  137. package/dist/speculative/WorkerPool.js +327 -0
  138. package/dist/speculative/WorkerPool.js.map +1 -0
  139. package/dist/speculative/index.d.ts +10 -0
  140. package/dist/speculative/index.d.ts.map +1 -0
  141. package/dist/speculative/index.js +17 -0
  142. package/dist/speculative/index.js.map +1 -0
  143. package/dist/subconscious/EmbeddingService.d.ts +73 -0
  144. package/dist/subconscious/EmbeddingService.d.ts.map +1 -0
  145. package/dist/subconscious/EmbeddingService.js +196 -0
  146. package/dist/subconscious/EmbeddingService.js.map +1 -0
  147. package/dist/subconscious/SemanticCache.d.ts +82 -0
  148. package/dist/subconscious/SemanticCache.d.ts.map +1 -0
  149. package/dist/subconscious/SemanticCache.js +164 -0
  150. package/dist/subconscious/SemanticCache.js.map +1 -0
  151. package/dist/subconscious/SubconsciousEngine.d.ts +121 -0
  152. package/dist/subconscious/SubconsciousEngine.d.ts.map +1 -0
  153. package/dist/subconscious/SubconsciousEngine.js +241 -0
  154. package/dist/subconscious/SubconsciousEngine.js.map +1 -0
  155. package/dist/subconscious/VectorStore.d.ts +54 -0
  156. package/dist/subconscious/VectorStore.d.ts.map +1 -0
  157. package/dist/subconscious/VectorStore.js +168 -0
  158. package/dist/subconscious/VectorStore.js.map +1 -0
  159. package/dist/subconscious/cache.d.ts +34 -0
  160. package/dist/subconscious/cache.d.ts.map +1 -0
  161. package/dist/subconscious/cache.js +156 -0
  162. package/dist/subconscious/cache.js.map +1 -0
  163. package/dist/subconscious/embeddings.d.ts +25 -0
  164. package/dist/subconscious/embeddings.d.ts.map +1 -0
  165. package/dist/subconscious/embeddings.js +65 -0
  166. package/dist/subconscious/embeddings.js.map +1 -0
  167. package/dist/subconscious/index.d.ts +12 -0
  168. package/dist/subconscious/index.d.ts.map +1 -0
  169. package/dist/subconscious/index.js +19 -0
  170. package/dist/subconscious/index.js.map +1 -0
  171. package/dist/types/index.d.ts +286 -0
  172. package/dist/types/index.d.ts.map +1 -0
  173. package/dist/types/index.js +43 -0
  174. package/dist/types/index.js.map +1 -0
  175. package/dist/utils/logger.d.ts +63 -0
  176. package/dist/utils/logger.d.ts.map +1 -0
  177. package/dist/utils/logger.js +126 -0
  178. package/dist/utils/logger.js.map +1 -0
  179. package/package.json +99 -0
@@ -0,0 +1,416 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.WebSocketServer = void 0;
37
+ const ws_1 = __importStar(require("ws"));
38
+ const events_1 = require("events");
39
+ const security_1 = require("../security");
40
+ /**
41
+ * High-performance WebSocket server for agent connections
42
+ * Handles connection lifecycle, heartbeat, reconnection logic, and security
43
+ */
44
+ class WebSocketServer extends events_1.EventEmitter {
45
+ constructor(config, securityConfig) {
46
+ super();
47
+ this.wss = null;
48
+ this.connections = new Map();
49
+ this.heartbeatInterval = null;
50
+ this.security = null;
51
+ this.stats = {
52
+ totalConnections: 0,
53
+ activeConnections: 0,
54
+ messagesReceived: 0,
55
+ messagesSent: 0,
56
+ reconnections: 0,
57
+ };
58
+ this.config = {
59
+ port: config.port || 8080,
60
+ heartbeatInterval: config.heartbeatInterval || 30000,
61
+ connectionTimeout: config.connectionTimeout || 60000,
62
+ maxConnections: config.maxConnections || 100,
63
+ ...config,
64
+ };
65
+ // Initialize security if config provided
66
+ if (securityConfig) {
67
+ this.security = new security_1.SecurityMiddleware(securityConfig);
68
+ console.log('🔒 Security enabled:', {
69
+ auth: securityConfig.auth.enabled,
70
+ rateLimit: securityConfig.rateLimit.enabled,
71
+ sanitization: securityConfig.sanitization.enabled,
72
+ });
73
+ }
74
+ }
75
+ /**
76
+ * Start the WebSocket server
77
+ */
78
+ start() {
79
+ return new Promise((resolve, reject) => {
80
+ try {
81
+ this.wss = new ws_1.WebSocketServer({
82
+ port: this.config.port,
83
+ maxPayload: 10 * 1024 * 1024, // 10MB max message size
84
+ });
85
+ this.wss.on('connection', (ws, req) => {
86
+ this.handleConnection(ws, req);
87
+ });
88
+ this.wss.on('error', (error) => {
89
+ this.emit('error', error);
90
+ reject(error);
91
+ });
92
+ this.wss.on('listening', () => {
93
+ console.log(`WebSocket server listening on port ${this.config.port}`);
94
+ this.startHeartbeat();
95
+ this.emit('ready');
96
+ resolve();
97
+ });
98
+ }
99
+ catch (error) {
100
+ reject(error);
101
+ }
102
+ });
103
+ }
104
+ /**
105
+ * Handle new WebSocket connection
106
+ */
107
+ handleConnection(ws, req) {
108
+ // Check max connections limit
109
+ if (this.connections.size >= this.config.maxConnections) {
110
+ ws.close(1008, 'Maximum connections reached');
111
+ return;
112
+ }
113
+ // Extract security headers
114
+ const apiKey = req.headers['authorization']?.replace('Bearer ', '');
115
+ const origin = req.headers['origin'];
116
+ // Validate connection if security is enabled
117
+ if (this.security) {
118
+ const securityCheck = this.security.checkRequest(apiKey, origin, { type: 'connection', timestamp: Date.now() }, req.socket.remoteAddress);
119
+ if (!securityCheck.allowed) {
120
+ console.log(`🚫 Connection rejected: ${securityCheck.reason}`);
121
+ ws.close(1008, securityCheck.reason);
122
+ this.emit('securityViolation', {
123
+ type: 'connection_rejected',
124
+ reason: securityCheck.reason,
125
+ ip: req.socket.remoteAddress,
126
+ origin,
127
+ });
128
+ return;
129
+ }
130
+ console.log('✅ Connection authenticated:', securityCheck.apiKey?.agentId);
131
+ }
132
+ const connectionId = this.generateConnectionId();
133
+ const connection = {
134
+ id: connectionId,
135
+ ws,
136
+ agentId: null,
137
+ capabilities: [],
138
+ isAlive: true,
139
+ connectedAt: Date.now(),
140
+ lastPing: Date.now(),
141
+ metadata: {
142
+ ip: req.socket.remoteAddress,
143
+ userAgent: req.headers['user-agent'],
144
+ apiKey: apiKey,
145
+ origin: origin,
146
+ },
147
+ };
148
+ this.connections.set(connectionId, connection);
149
+ this.stats.totalConnections++;
150
+ this.stats.activeConnections++;
151
+ console.log(`New connection: ${connectionId} (${this.stats.activeConnections} active)`);
152
+ // Setup WebSocket event handlers
153
+ ws.on('message', (data) => {
154
+ this.handleMessage(connectionId, data);
155
+ });
156
+ ws.on('pong', () => {
157
+ this.handlePong(connectionId);
158
+ });
159
+ ws.on('close', (code, reason) => {
160
+ this.handleDisconnection(connectionId, code, reason.toString());
161
+ });
162
+ ws.on('error', (error) => {
163
+ this.handleError(connectionId, error);
164
+ });
165
+ this.emit('connection', connection);
166
+ }
167
+ /**
168
+ * Handle incoming message from agent
169
+ */
170
+ handleMessage(connectionId, data) {
171
+ const connection = this.connections.get(connectionId);
172
+ if (!connection)
173
+ return;
174
+ try {
175
+ const message = JSON.parse(data.toString());
176
+ // Security check if enabled
177
+ if (this.security) {
178
+ const securityCheck = this.security.checkRequest(connection.metadata?.apiKey, connection.metadata?.origin, message, connection.agentId || connection.metadata?.ip || connectionId);
179
+ if (!securityCheck.allowed) {
180
+ console.log(`🚫 Message rejected from ${connectionId}: ${securityCheck.reason}`);
181
+ this.sendToConnection(connectionId, {
182
+ type: 'ERROR',
183
+ id: message.id || 'unknown',
184
+ timestamp: Date.now(),
185
+ payload: {
186
+ code: 'SECURITY_ERROR',
187
+ message: securityCheck.reason,
188
+ rateLimit: securityCheck.rateLimit,
189
+ },
190
+ });
191
+ this.emit('securityViolation', {
192
+ type: 'message_rejected',
193
+ connectionId,
194
+ agentId: connection.agentId,
195
+ reason: securityCheck.reason,
196
+ message: message.type,
197
+ });
198
+ return;
199
+ }
200
+ // Use sanitized message
201
+ if (securityCheck.sanitizedMessage) {
202
+ Object.assign(message, securityCheck.sanitizedMessage);
203
+ }
204
+ // Add rate limit info to response headers
205
+ if (securityCheck.rateLimit) {
206
+ connection.metadata = {
207
+ ...connection.metadata,
208
+ rateLimit: securityCheck.rateLimit,
209
+ };
210
+ }
211
+ }
212
+ this.stats.messagesReceived++;
213
+ console.log('📨 WebSocketServer received message:');
214
+ console.log(' Connection ID:', connectionId);
215
+ console.log(' Agent ID:', connection.agentId);
216
+ console.log(' Message type:', message.type);
217
+ // Update last activity
218
+ connection.lastPing = Date.now();
219
+ this.emit('message', {
220
+ connectionId,
221
+ agentId: connection.agentId,
222
+ message,
223
+ });
224
+ }
225
+ catch (error) {
226
+ console.error(`Failed to parse message from ${connectionId}:`, error);
227
+ this.sendError(connectionId, 'Invalid JSON message');
228
+ }
229
+ }
230
+ /**
231
+ * Handle pong response (heartbeat)
232
+ */
233
+ handlePong(connectionId) {
234
+ const connection = this.connections.get(connectionId);
235
+ if (connection) {
236
+ connection.isAlive = true;
237
+ connection.lastPing = Date.now();
238
+ }
239
+ }
240
+ /**
241
+ * Handle connection close
242
+ */
243
+ handleDisconnection(connectionId, code, reason) {
244
+ const connection = this.connections.get(connectionId);
245
+ if (!connection)
246
+ return;
247
+ console.log(`Connection closed: ${connectionId} (code: ${code}, reason: ${reason})`);
248
+ this.emit('disconnection', {
249
+ connectionId,
250
+ agentId: connection.agentId,
251
+ code,
252
+ reason,
253
+ });
254
+ this.connections.delete(connectionId);
255
+ this.stats.activeConnections--;
256
+ }
257
+ /**
258
+ * Handle WebSocket error
259
+ */
260
+ handleError(connectionId, error) {
261
+ console.error(`WebSocket error on ${connectionId}:`, error);
262
+ this.emit('connectionError', { connectionId, error });
263
+ }
264
+ /**
265
+ * Start heartbeat mechanism (ping/pong)
266
+ */
267
+ startHeartbeat() {
268
+ this.heartbeatInterval = setInterval(() => {
269
+ this.connections.forEach((connection, connectionId) => {
270
+ // Check if connection is still alive
271
+ if (!connection.isAlive) {
272
+ console.log(`Terminating dead connection: ${connectionId}`);
273
+ connection.ws.terminate();
274
+ return;
275
+ }
276
+ // Check for timeout
277
+ const timeSinceLastPing = Date.now() - connection.lastPing;
278
+ if (timeSinceLastPing > this.config.connectionTimeout) {
279
+ console.log(`Connection timeout: ${connectionId}`);
280
+ connection.ws.close(1000, 'Connection timeout');
281
+ return;
282
+ }
283
+ // Send ping
284
+ connection.isAlive = false;
285
+ connection.ws.ping();
286
+ });
287
+ }, this.config.heartbeatInterval);
288
+ }
289
+ /**
290
+ * Send message to specific connection
291
+ */
292
+ sendToConnection(connectionId, message) {
293
+ const connection = this.connections.get(connectionId);
294
+ if (!connection || connection.ws.readyState !== ws_1.default.OPEN) {
295
+ return false;
296
+ }
297
+ try {
298
+ connection.ws.send(JSON.stringify(message));
299
+ this.stats.messagesSent++;
300
+ return true;
301
+ }
302
+ catch (error) {
303
+ console.error(`Failed to send message to ${connectionId}:`, error);
304
+ return false;
305
+ }
306
+ }
307
+ /**
308
+ * Send message to specific agent
309
+ */
310
+ sendToAgent(agentId, message) {
311
+ const connection = Array.from(this.connections.values()).find(conn => conn.agentId === agentId);
312
+ if (!connection) {
313
+ return false;
314
+ }
315
+ return this.sendToConnection(connection.id, message);
316
+ }
317
+ /**
318
+ * Broadcast message to all connected agents
319
+ */
320
+ broadcast(message, excludeConnectionId) {
321
+ const payload = JSON.stringify(message);
322
+ this.connections.forEach((connection, connectionId) => {
323
+ if (excludeConnectionId && connectionId === excludeConnectionId) {
324
+ return;
325
+ }
326
+ if (connection.ws.readyState === ws_1.default.OPEN) {
327
+ connection.ws.send(payload);
328
+ this.stats.messagesSent++;
329
+ }
330
+ });
331
+ }
332
+ /**
333
+ * Send error message to connection
334
+ */
335
+ sendError(connectionId, errorMessage) {
336
+ this.sendToConnection(connectionId, {
337
+ type: 'error',
338
+ error: errorMessage,
339
+ timestamp: Date.now(),
340
+ });
341
+ }
342
+ /**
343
+ * Update agent information for a connection
344
+ */
345
+ updateAgentInfo(connectionId, agentId, capabilities) {
346
+ const connection = this.connections.get(connectionId);
347
+ if (!connection) {
348
+ return false;
349
+ }
350
+ connection.agentId = agentId;
351
+ connection.capabilities = capabilities;
352
+ return true;
353
+ }
354
+ /**
355
+ * Get connection by ID
356
+ */
357
+ getConnection(connectionId) {
358
+ return this.connections.get(connectionId);
359
+ }
360
+ /**
361
+ * Get all active connections
362
+ */
363
+ getConnections() {
364
+ return Array.from(this.connections.values());
365
+ }
366
+ /**
367
+ * Get connection statistics
368
+ */
369
+ getStats() {
370
+ return { ...this.stats };
371
+ }
372
+ /**
373
+ * Generate unique connection ID
374
+ */
375
+ generateConnectionId() {
376
+ return `conn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
377
+ }
378
+ /**
379
+ * Stop the WebSocket server
380
+ */
381
+ async stop() {
382
+ return new Promise((resolve) => {
383
+ // Stop heartbeat
384
+ if (this.heartbeatInterval) {
385
+ clearInterval(this.heartbeatInterval);
386
+ this.heartbeatInterval = null;
387
+ }
388
+ // Destroy security middleware
389
+ if (this.security) {
390
+ this.security.destroy();
391
+ }
392
+ // Close all connections
393
+ this.connections.forEach((connection) => {
394
+ connection.ws.close(1000, 'Server shutting down');
395
+ });
396
+ // Close server
397
+ if (this.wss) {
398
+ this.wss.close(() => {
399
+ console.log('WebSocket server stopped');
400
+ resolve();
401
+ });
402
+ }
403
+ else {
404
+ resolve();
405
+ }
406
+ });
407
+ }
408
+ /**
409
+ * Get security middleware (for key management)
410
+ */
411
+ getSecurity() {
412
+ return this.security;
413
+ }
414
+ }
415
+ exports.WebSocketServer = WebSocketServer;
416
+ //# sourceMappingURL=WebSocketServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebSocketServer.js","sourceRoot":"","sources":["../../src/core/WebSocketServer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA4D;AAC5D,mCAAsC;AAEtC,0CAAiE;AAEjE;;;GAGG;AACH,MAAa,eAAgB,SAAQ,qBAAY;IAc/C,YAAY,MAAoB,EAAE,cAA+B;QAC/D,KAAK,EAAE,CAAC;QAdF,QAAG,GAAoB,IAAI,CAAC;QAC5B,gBAAW,GAAiC,IAAI,GAAG,EAAE,CAAC;QACtD,sBAAiB,GAA0B,IAAI,CAAC;QAEhD,aAAQ,GAA8B,IAAI,CAAC;QAC3C,UAAK,GAAoB;YAC/B,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,gBAAgB,EAAE,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;SACjB,CAAC;QAIA,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;YACzB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK;YACpD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK;YACpD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,GAAG;YAC5C,GAAG,MAAM;SACV,CAAC;QAEF,yCAAyC;QACzC,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,6BAAkB,CAAC,cAAc,CAAC,CAAC;YACvD,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE;gBAClC,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,OAAO;gBACjC,SAAS,EAAE,cAAc,CAAC,SAAS,CAAC,OAAO;gBAC3C,YAAY,EAAE,cAAc,CAAC,YAAY,CAAC,OAAO;aAClD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED;;OAEG;IACI,KAAK;QACV,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC;gBACH,IAAI,CAAC,GAAG,GAAG,IAAI,oBAAQ,CAAC;oBACtB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;oBACtB,UAAU,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,EAAE,wBAAwB;iBACvD,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,EAAa,EAAE,GAAG,EAAE,EAAE;oBAC/C,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;gBACjC,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;oBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;oBAC1B,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE;oBAC5B,OAAO,CAAC,GAAG,CAAC,sCAAsC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBACtE,IAAI,CAAC,cAAc,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBACnB,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YAEL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,EAAa,EAAE,GAAQ;QAC9C,8BAA8B;QAC9B,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,cAAe,EAAE,CAAC;YACzD,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,2BAA2B;QAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAErC,6CAA6C;QAC7C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAC9C,MAAM,EACN,MAAM,EACN,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,EAC7C,GAAG,CAAC,MAAM,CAAC,aAAa,CACzB,CAAC;YAEF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,2BAA2B,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC/D,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;oBAC7B,IAAI,EAAE,qBAAqB;oBAC3B,MAAM,EAAE,aAAa,CAAC,MAAM;oBAC5B,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;oBAC5B,MAAM;iBACP,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,EAAE,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACjD,MAAM,UAAU,GAAoB;YAClC,EAAE,EAAE,YAAY;YAChB,EAAE;YACF,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,EAAE;YAChB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;YACpB,QAAQ,EAAE;gBACR,EAAE,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;gBAC5B,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC;gBACpC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,MAAM;aACf;SACF,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,mBAAmB,YAAY,KAAK,IAAI,CAAC,KAAK,CAAC,iBAAiB,UAAU,CAAC,CAAC;QAExF,iCAAiC;QACjC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAY,EAAE,EAAE;YAChC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,MAAc,EAAE,EAAE;YAC9C,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YAC9B,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,YAAoB,EAAE,IAAY;QACtD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE5C,4BAA4B;YAC5B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAC9C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAC3B,UAAU,CAAC,QAAQ,EAAE,MAAM,EAC3B,OAAO,EACP,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,EAAE,IAAI,YAAY,CAC9D,CAAC;gBAEF,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,4BAA4B,YAAY,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;oBAEjF,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;wBAClC,IAAI,EAAE,OAAO;wBACb,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,SAAS;wBAC3B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;wBACrB,OAAO,EAAE;4BACP,IAAI,EAAE,gBAAgB;4BACtB,OAAO,EAAE,aAAa,CAAC,MAAM;4BAC7B,SAAS,EAAE,aAAa,CAAC,SAAS;yBACnC;qBACF,CAAC,CAAC;oBAEH,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;wBAC7B,IAAI,EAAE,kBAAkB;wBACxB,YAAY;wBACZ,OAAO,EAAE,UAAU,CAAC,OAAO;wBAC3B,MAAM,EAAE,aAAa,CAAC,MAAM;wBAC5B,OAAO,EAAE,OAAO,CAAC,IAAI;qBACtB,CAAC,CAAC;oBAEH,OAAO;gBACT,CAAC;gBAED,wBAAwB;gBACxB,IAAI,aAAa,CAAC,gBAAgB,EAAE,CAAC;oBACnC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBACzD,CAAC;gBAED,0CAA0C;gBAC1C,IAAI,aAAa,CAAC,SAAS,EAAE,CAAC;oBAC5B,UAAU,CAAC,QAAQ,GAAG;wBACpB,GAAG,UAAU,CAAC,QAAQ;wBACtB,SAAS,EAAE,aAAa,CAAC,SAAS;qBACnC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;YAE9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAE9C,uBAAuB;YACvB,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAEjC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACnB,YAAY;gBACZ,OAAO,EAAE,UAAU,CAAC,OAAO;gBAC3B,OAAO;aACR,CAAC,CAAC;QAEL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,YAAoB;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,UAAU,EAAE,CAAC;YACf,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC1B,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,YAAoB,EAAE,IAAY,EAAE,MAAc;QAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,OAAO,CAAC,GAAG,CAAC,sBAAsB,YAAY,WAAW,IAAI,aAAa,MAAM,GAAG,CAAC,CAAC;QAErF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,YAAY;YACZ,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,IAAI;YACJ,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,YAAoB,EAAE,KAAY;QACpD,OAAO,CAAC,KAAK,CAAC,sBAAsB,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE;gBACpD,qCAAqC;gBACrC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;oBAC5D,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC;oBAC1B,OAAO;gBACT,CAAC;gBAED,oBAAoB;gBACpB,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC;gBAC3D,IAAI,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAkB,EAAE,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,uBAAuB,YAAY,EAAE,CAAC,CAAC;oBACnD,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;oBAChD,OAAO;gBACT,CAAC;gBAED,YAAY;gBACZ,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC;gBAC3B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,gBAAgB,CAAC,YAAoB,EAAE,OAAY;QACxD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,YAAS,CAAC,IAAI,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACH,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,6BAA6B,YAAY,GAAG,EAAE,KAAK,CAAC,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACI,WAAW,CAAC,OAAe,EAAE,OAAY;QAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAC3D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,KAAK,OAAO,CACjC,CAAC;QAEF,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,OAAY,EAAE,mBAA4B;QACzD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAExC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,EAAE;YACpD,IAAI,mBAAmB,IAAI,YAAY,KAAK,mBAAmB,EAAE,CAAC;gBAChE,OAAO;YACT,CAAC;YAED,IAAI,UAAU,CAAC,EAAE,CAAC,UAAU,KAAK,YAAS,CAAC,IAAI,EAAE,CAAC;gBAChD,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,YAAoB,EAAE,YAAoB;QAC1D,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE;YAClC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,YAAY;YACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,eAAe,CAAC,YAAoB,EAAE,OAAe,EAAE,YAAsB;QAClF,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;QAC7B,UAAU,CAAC,YAAY,GAAG,YAAY,CAAC;QAEvC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,YAAoB;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACI,cAAc;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;IACzE,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,IAAI;QACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,iBAAiB;YACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBACtC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAChC,CAAC;YAED,8BAA8B;YAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YAC1B,CAAC;YAED,wBAAwB;YACxB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACtC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,eAAe;YACf,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE;oBAClB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;oBACxC,OAAO,EAAE,CAAC;gBACZ,CAAC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,WAAW;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AAzbD,0CAybC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Core Hub WebSocket - Main exports
3
+ *
4
+ * This module provides the core infrastructure for the Subconscious Router:
5
+ * - WebSocketServer: High-performance WebSocket server with connection management
6
+ * - AgentRegistry: Dynamic agent registration and capability tracking
7
+ * - Router: I.A.P. message routing and task orchestration
8
+ */
9
+ export { WebSocketServer } from './WebSocketServer';
10
+ export { AgentRegistry } from './AgentRegistry';
11
+ export { Router } from './router';
12
+ export { OrchestrationEngine } from './OrchestrationEngine';
13
+ export { SubconsciousEngine } from './SubconsciousEngine';
14
+ export { DashboardBroadcaster } from './DashboardBroadcaster';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Core Hub WebSocket - Main exports
4
+ *
5
+ * This module provides the core infrastructure for the Subconscious Router:
6
+ * - WebSocketServer: High-performance WebSocket server with connection management
7
+ * - AgentRegistry: Dynamic agent registration and capability tracking
8
+ * - Router: I.A.P. message routing and task orchestration
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.DashboardBroadcaster = exports.SubconsciousEngine = exports.OrchestrationEngine = exports.Router = exports.AgentRegistry = exports.WebSocketServer = void 0;
12
+ var WebSocketServer_1 = require("./WebSocketServer");
13
+ Object.defineProperty(exports, "WebSocketServer", { enumerable: true, get: function () { return WebSocketServer_1.WebSocketServer; } });
14
+ var AgentRegistry_1 = require("./AgentRegistry");
15
+ Object.defineProperty(exports, "AgentRegistry", { enumerable: true, get: function () { return AgentRegistry_1.AgentRegistry; } });
16
+ var router_1 = require("./router");
17
+ Object.defineProperty(exports, "Router", { enumerable: true, get: function () { return router_1.Router; } });
18
+ var OrchestrationEngine_1 = require("./OrchestrationEngine");
19
+ Object.defineProperty(exports, "OrchestrationEngine", { enumerable: true, get: function () { return OrchestrationEngine_1.OrchestrationEngine; } });
20
+ var SubconsciousEngine_1 = require("./SubconsciousEngine");
21
+ Object.defineProperty(exports, "SubconsciousEngine", { enumerable: true, get: function () { return SubconsciousEngine_1.SubconsciousEngine; } });
22
+ var DashboardBroadcaster_1 = require("./DashboardBroadcaster");
23
+ Object.defineProperty(exports, "DashboardBroadcaster", { enumerable: true, get: function () { return DashboardBroadcaster_1.DashboardBroadcaster; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,qDAAoD;AAA3C,kHAAA,eAAe,OAAA;AACxB,iDAAgD;AAAvC,8GAAA,aAAa,OAAA;AACtB,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,6DAA4D;AAAnD,0HAAA,mBAAmB,OAAA;AAC5B,2DAA0D;AAAjD,wHAAA,kBAAkB,OAAA;AAC3B,+DAA8D;AAArD,4HAAA,oBAAoB,OAAA"}
@@ -0,0 +1,105 @@
1
+ import { EventEmitter } from 'events';
2
+ import { AgentRegistry } from './AgentRegistry';
3
+ import { WebSocketServer } from './WebSocketServer';
4
+ import { RouterConfig } from '../types';
5
+ /**
6
+ * Core routing engine for Inter-Agent Protocol (I.A.P.) messages
7
+ * Handles message reception, agent selection, and error management
8
+ */
9
+ export declare class Router extends EventEmitter {
10
+ private wsServer;
11
+ private agentRegistry;
12
+ private config;
13
+ private pendingTasks;
14
+ private taskTimeouts;
15
+ constructor(wsServer: WebSocketServer, agentRegistry: AgentRegistry, config: RouterConfig);
16
+ /**
17
+ * Setup event handlers for WebSocket server
18
+ */
19
+ private setupEventHandlers;
20
+ /**
21
+ * Handle incoming I.A.P. message
22
+ */
23
+ private handleMessage;
24
+ /**
25
+ * Handle agent handshake (registration)
26
+ */
27
+ private handleHandshake;
28
+ /**
29
+ * Handle task request from agent or external source
30
+ */
31
+ private handleTaskRequest;
32
+ /**
33
+ * Handle task response from agent
34
+ */
35
+ private handleTaskResponse;
36
+ /**
37
+ * Handle capability query
38
+ */
39
+ private handleCapabilityQuery;
40
+ /**
41
+ * Handle heartbeat message
42
+ */
43
+ private handleHeartbeat;
44
+ /**
45
+ * Handle error message from agent
46
+ */
47
+ private handleErrorMessage;
48
+ /**
49
+ * Select best agent for a task
50
+ */
51
+ private selectAgent;
52
+ /**
53
+ * Handle agent disconnection
54
+ */
55
+ private handleAgentDisconnection;
56
+ /**
57
+ * Handle task failure
58
+ */
59
+ private handleTaskFailure;
60
+ /**
61
+ * Retry a failed task
62
+ */
63
+ private retryTask;
64
+ /**
65
+ * Set timeout for a task
66
+ */
67
+ private setTaskTimeout;
68
+ /**
69
+ * Clear timeout for a task
70
+ */
71
+ private clearTaskTimeout;
72
+ /**
73
+ * Send error message to connection
74
+ */
75
+ private sendError;
76
+ /**
77
+ * Validate I.A.P. message structure
78
+ */
79
+ private validateMessage;
80
+ /**
81
+ * Generate unique message ID
82
+ */
83
+ private generateMessageId;
84
+ /**
85
+ * Get router statistics
86
+ */
87
+ getStats(): {
88
+ pendingTasks: number;
89
+ agentStats: {
90
+ totalAgents: number;
91
+ onlineAgents: number;
92
+ offlineAgents: number;
93
+ totalCapabilities: number;
94
+ totalTasksInProgress: number;
95
+ totalTasksCompleted: number;
96
+ totalTasksFailed: number;
97
+ };
98
+ connectionStats: import("../types").ConnectionStats;
99
+ };
100
+ /**
101
+ * Stop the router
102
+ */
103
+ stop(): void;
104
+ }
105
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/core/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAKL,YAAY,EAEb,MAAM,UAAU,CAAC;AAElB;;;GAGG;AACH,qBAAa,MAAO,SAAQ,YAAY;IACtC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,YAAY,CAAuC;IAC3D,OAAO,CAAC,YAAY,CAA0C;gBAG5D,QAAQ,EAAE,eAAe,EACzB,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,YAAY;IAetB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAmB1B;;OAEG;YACW,aAAa;IAsD3B;;OAEG;YACW,eAAe;IAsC7B;;OAEG;YACW,iBAAiB;IA2D/B;;OAEG;YACW,kBAAkB;IA4ChC;;OAEG;YACW,qBAAqB;IA0BnC;;OAEG;YACW,eAAe;IAgB7B;;OAEG;YACW,kBAAkB;IAWhC;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAchC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;OAEG;YACW,SAAS;IA6BvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAUtB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,SAAS;IAWjB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAIzB;;OAEG;IACI,QAAQ;;;;;;;;;;;;;IAQf;;OAEG;IACI,IAAI,IAAI,IAAI;CAMpB"}