@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,344 @@
1
+ "use strict";
2
+ /**
3
+ * Inter-Agent Protocol (I.A.P.) v1.0.0
4
+ *
5
+ * Message validators for ensuring protocol compliance
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.PROTOCOL_VERSION = void 0;
9
+ exports.validateIAPMessage = validateIAPMessage;
10
+ exports.validateHandshake = validateHandshake;
11
+ exports.validateCapability = validateCapability;
12
+ exports.validateTaskProposal = validateTaskProposal;
13
+ exports.validateTaskBid = validateTaskBid;
14
+ exports.validateContextTransfer = validateContextTransfer;
15
+ exports.validateErrorMessage = validateErrorMessage;
16
+ exports.createValidationError = createValidationError;
17
+ exports.sanitizeMessage = sanitizeMessage;
18
+ const types_1 = require("./types");
19
+ /**
20
+ * Protocol version supported by this implementation
21
+ */
22
+ exports.PROTOCOL_VERSION = '1.0.0';
23
+ /**
24
+ * Validates a complete I.A.P. message
25
+ */
26
+ function validateIAPMessage(message) {
27
+ const errors = [];
28
+ // Check required fields
29
+ if (!message.messageId || typeof message.messageId !== 'string') {
30
+ errors.push('Missing or invalid messageId');
31
+ }
32
+ if (!message.type || !Object.values(types_1.MessageType).includes(message.type)) {
33
+ errors.push('Missing or invalid message type');
34
+ }
35
+ if (!message.from || typeof message.from !== 'string') {
36
+ errors.push('Missing or invalid from field');
37
+ }
38
+ if (!message.to || typeof message.to !== 'string') {
39
+ errors.push('Missing or invalid to field');
40
+ }
41
+ if (!message.timestamp || !isValidTimestamp(message.timestamp)) {
42
+ errors.push('Missing or invalid timestamp');
43
+ }
44
+ if (!message.protocolVersion || typeof message.protocolVersion !== 'string') {
45
+ errors.push('Missing or invalid protocolVersion');
46
+ }
47
+ if (!message.payload || typeof message.payload !== 'object') {
48
+ errors.push('Missing or invalid payload');
49
+ }
50
+ // Validate protocol version compatibility
51
+ if (message.protocolVersion && !isCompatibleVersion(message.protocolVersion)) {
52
+ errors.push(`Incompatible protocol version: ${message.protocolVersion}`);
53
+ }
54
+ // Validate payload based on message type
55
+ if (message.type && message.payload) {
56
+ const payloadValidation = validatePayload(message.type, message.payload);
57
+ errors.push(...payloadValidation.errors);
58
+ }
59
+ return {
60
+ valid: errors.length === 0,
61
+ errors
62
+ };
63
+ }
64
+ /**
65
+ * Validates payload based on message type
66
+ */
67
+ function validatePayload(type, payload) {
68
+ switch (type) {
69
+ case types_1.MessageType.HANDSHAKE:
70
+ return validateHandshake(payload);
71
+ case types_1.MessageType.TASK_PROPOSAL:
72
+ return validateTaskProposal(payload);
73
+ case types_1.MessageType.TASK_BID:
74
+ return validateTaskBid(payload);
75
+ case types_1.MessageType.CONTEXT_TRANSFER:
76
+ return validateContextTransfer(payload);
77
+ case types_1.MessageType.ERROR:
78
+ return validateErrorMessage(payload);
79
+ default:
80
+ return { valid: true, errors: [] };
81
+ }
82
+ }
83
+ /**
84
+ * Validates an AgentHandshake payload
85
+ */
86
+ function validateHandshake(handshake) {
87
+ const errors = [];
88
+ if (!handshake.agentId || typeof handshake.agentId !== 'string') {
89
+ errors.push('Handshake: Missing or invalid agentId');
90
+ }
91
+ if (!handshake.name || typeof handshake.name !== 'string') {
92
+ errors.push('Handshake: Missing or invalid name');
93
+ }
94
+ if (!handshake.version || typeof handshake.version !== 'string') {
95
+ errors.push('Handshake: Missing or invalid version');
96
+ }
97
+ if (!handshake.protocolVersion || typeof handshake.protocolVersion !== 'string') {
98
+ errors.push('Handshake: Missing or invalid protocolVersion');
99
+ }
100
+ if (!Array.isArray(handshake.capabilities)) {
101
+ errors.push('Handshake: capabilities must be an array');
102
+ }
103
+ else {
104
+ handshake.capabilities.forEach((cap, index) => {
105
+ const capValidation = validateCapability(cap);
106
+ capValidation.errors.forEach(err => {
107
+ errors.push(`Handshake: capability[${index}] - ${err}`);
108
+ });
109
+ });
110
+ }
111
+ if (handshake.maxConcurrentTasks !== undefined) {
112
+ if (typeof handshake.maxConcurrentTasks !== 'number' || handshake.maxConcurrentTasks < 1) {
113
+ errors.push('Handshake: maxConcurrentTasks must be a positive number');
114
+ }
115
+ }
116
+ if (handshake.currentLoad !== undefined) {
117
+ if (typeof handshake.currentLoad !== 'number' ||
118
+ handshake.currentLoad < 0 ||
119
+ handshake.currentLoad > 1) {
120
+ errors.push('Handshake: currentLoad must be between 0.0 and 1.0');
121
+ }
122
+ }
123
+ return {
124
+ valid: errors.length === 0,
125
+ errors
126
+ };
127
+ }
128
+ /**
129
+ * Validates an AgentCapability
130
+ */
131
+ function validateCapability(capability) {
132
+ const errors = [];
133
+ if (!capability.id || typeof capability.id !== 'string') {
134
+ errors.push('Missing or invalid capability id');
135
+ }
136
+ if (!capability.type || !Object.values(types_1.CapabilityType).includes(capability.type)) {
137
+ errors.push('Missing or invalid capability type');
138
+ }
139
+ if (!capability.name || typeof capability.name !== 'string') {
140
+ errors.push('Missing or invalid capability name');
141
+ }
142
+ if (!capability.description || typeof capability.description !== 'string') {
143
+ errors.push('Missing or invalid capability description');
144
+ }
145
+ if (capability.estimatedCost !== undefined && typeof capability.estimatedCost !== 'number') {
146
+ errors.push('estimatedCost must be a number');
147
+ }
148
+ if (capability.averageLatency !== undefined && typeof capability.averageLatency !== 'number') {
149
+ errors.push('averageLatency must be a number');
150
+ }
151
+ return {
152
+ valid: errors.length === 0,
153
+ errors
154
+ };
155
+ }
156
+ /**
157
+ * Validates a TaskProposal payload
158
+ */
159
+ function validateTaskProposal(proposal) {
160
+ const errors = [];
161
+ if (!proposal.taskId || typeof proposal.taskId !== 'string') {
162
+ errors.push('TaskProposal: Missing or invalid taskId');
163
+ }
164
+ if (!proposal.proposerId || typeof proposal.proposerId !== 'string') {
165
+ errors.push('TaskProposal: Missing or invalid proposerId');
166
+ }
167
+ if (!proposal.description || typeof proposal.description !== 'string') {
168
+ errors.push('TaskProposal: Missing or invalid description');
169
+ }
170
+ if (!proposal.requiredCapability ||
171
+ !Object.values(types_1.CapabilityType).includes(proposal.requiredCapability)) {
172
+ errors.push('TaskProposal: Missing or invalid requiredCapability');
173
+ }
174
+ if (!proposal.input || typeof proposal.input !== 'object') {
175
+ errors.push('TaskProposal: Missing or invalid input');
176
+ }
177
+ if (proposal.priority !== undefined) {
178
+ if (typeof proposal.priority !== 'number' ||
179
+ proposal.priority < 1 ||
180
+ proposal.priority > 10) {
181
+ errors.push('TaskProposal: priority must be between 1 and 10');
182
+ }
183
+ }
184
+ if (proposal.maxLatency !== undefined &&
185
+ (typeof proposal.maxLatency !== 'number' || proposal.maxLatency <= 0)) {
186
+ errors.push('TaskProposal: maxLatency must be a positive number');
187
+ }
188
+ if (proposal.maxCost !== undefined &&
189
+ (typeof proposal.maxCost !== 'number' || proposal.maxCost <= 0)) {
190
+ errors.push('TaskProposal: maxCost must be a positive number');
191
+ }
192
+ if (proposal.deadline !== undefined && !isValidTimestamp(proposal.deadline)) {
193
+ errors.push('TaskProposal: Invalid deadline timestamp');
194
+ }
195
+ return {
196
+ valid: errors.length === 0,
197
+ errors
198
+ };
199
+ }
200
+ /**
201
+ * Validates a TaskBid payload
202
+ */
203
+ function validateTaskBid(bid) {
204
+ const errors = [];
205
+ if (!bid.taskId || typeof bid.taskId !== 'string') {
206
+ errors.push('TaskBid: Missing or invalid taskId');
207
+ }
208
+ if (!bid.bidderId || typeof bid.bidderId !== 'string') {
209
+ errors.push('TaskBid: Missing or invalid bidderId');
210
+ }
211
+ if (typeof bid.estimatedLatency !== 'number' || bid.estimatedLatency <= 0) {
212
+ errors.push('TaskBid: estimatedLatency must be a positive number');
213
+ }
214
+ if (typeof bid.estimatedCost !== 'number' || bid.estimatedCost < 0) {
215
+ errors.push('TaskBid: estimatedCost must be a non-negative number');
216
+ }
217
+ if (typeof bid.confidence !== 'number' || bid.confidence < 0 || bid.confidence > 1) {
218
+ errors.push('TaskBid: confidence must be between 0.0 and 1.0');
219
+ }
220
+ if (typeof bid.queueDepth !== 'number' || bid.queueDepth < 0) {
221
+ errors.push('TaskBid: queueDepth must be a non-negative number');
222
+ }
223
+ if (bid.earliestStartTime !== undefined && !isValidTimestamp(bid.earliestStartTime)) {
224
+ errors.push('TaskBid: Invalid earliestStartTime timestamp');
225
+ }
226
+ return {
227
+ valid: errors.length === 0,
228
+ errors
229
+ };
230
+ }
231
+ /**
232
+ * Validates a ContextTransfer payload
233
+ */
234
+ function validateContextTransfer(transfer) {
235
+ const errors = [];
236
+ if (!transfer.fromAgent || typeof transfer.fromAgent !== 'string') {
237
+ errors.push('ContextTransfer: Missing or invalid fromAgent');
238
+ }
239
+ if (!transfer.toAgent || typeof transfer.toAgent !== 'string') {
240
+ errors.push('ContextTransfer: Missing or invalid toAgent');
241
+ }
242
+ if (!transfer.taskId || typeof transfer.taskId !== 'string') {
243
+ errors.push('ContextTransfer: Missing or invalid taskId');
244
+ }
245
+ if (!transfer.contextType || typeof transfer.contextType !== 'string') {
246
+ errors.push('ContextTransfer: Missing or invalid contextType');
247
+ }
248
+ if (!transfer.data || typeof transfer.data !== 'object') {
249
+ errors.push('ContextTransfer: Missing or invalid data');
250
+ }
251
+ if (transfer.embedding !== undefined) {
252
+ if (!Array.isArray(transfer.embedding)) {
253
+ errors.push('ContextTransfer: embedding must be an array');
254
+ }
255
+ else if (!transfer.embedding.every((n) => typeof n === 'number')) {
256
+ errors.push('ContextTransfer: embedding must contain only numbers');
257
+ }
258
+ }
259
+ if (transfer.compression !== undefined) {
260
+ const validCompressions = ['gzip', 'brotli', 'none'];
261
+ if (!validCompressions.includes(transfer.compression)) {
262
+ errors.push('ContextTransfer: Invalid compression format');
263
+ }
264
+ }
265
+ return {
266
+ valid: errors.length === 0,
267
+ errors
268
+ };
269
+ }
270
+ /**
271
+ * Validates an ErrorMessage payload
272
+ */
273
+ function validateErrorMessage(error) {
274
+ const errors = [];
275
+ if (!error.code || typeof error.code !== 'string') {
276
+ errors.push('ErrorMessage: Missing or invalid code');
277
+ }
278
+ if (!error.message || typeof error.message !== 'string') {
279
+ errors.push('ErrorMessage: Missing or invalid message');
280
+ }
281
+ if (typeof error.recoverable !== 'boolean') {
282
+ errors.push('ErrorMessage: recoverable must be a boolean');
283
+ }
284
+ return {
285
+ valid: errors.length === 0,
286
+ errors
287
+ };
288
+ }
289
+ /**
290
+ * Checks if a timestamp is valid ISO 8601 format
291
+ */
292
+ function isValidTimestamp(timestamp) {
293
+ if (typeof timestamp !== 'string')
294
+ return false;
295
+ const date = new Date(timestamp);
296
+ return !isNaN(date.getTime()) && date.toISOString() === timestamp;
297
+ }
298
+ /**
299
+ * Checks if a protocol version is compatible with this implementation
300
+ */
301
+ function isCompatibleVersion(version) {
302
+ // Simple major version check (1.x.x is compatible with 1.0.0)
303
+ const [major] = version.split('.');
304
+ const [expectedMajor] = exports.PROTOCOL_VERSION.split('.');
305
+ return major === expectedMajor;
306
+ }
307
+ /**
308
+ * Creates a validation error message
309
+ */
310
+ function createValidationError(errors) {
311
+ return {
312
+ code: 'VALIDATION_ERROR',
313
+ message: 'Message validation failed',
314
+ details: { errors },
315
+ recoverable: true
316
+ };
317
+ }
318
+ /**
319
+ * Sanitizes a message by removing invalid fields
320
+ */
321
+ function sanitizeMessage(message) {
322
+ const sanitized = {};
323
+ // Copy only valid fields
324
+ if (message.messageId)
325
+ sanitized.messageId = message.messageId;
326
+ if (message.type)
327
+ sanitized.type = message.type;
328
+ if (message.from)
329
+ sanitized.from = message.from;
330
+ if (message.to)
331
+ sanitized.to = message.to;
332
+ if (message.timestamp)
333
+ sanitized.timestamp = message.timestamp;
334
+ if (message.protocolVersion)
335
+ sanitized.protocolVersion = message.protocolVersion;
336
+ if (message.payload)
337
+ sanitized.payload = message.payload;
338
+ if (message.correlationId)
339
+ sanitized.correlationId = message.correlationId;
340
+ if (message.metadata)
341
+ sanitized.metadata = message.metadata;
342
+ return sanitized;
343
+ }
344
+ //# sourceMappingURL=validators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.js","sourceRoot":"","sources":["../../src/protocol/validators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Authentication Manager
3
+ * Handles API key generation, validation, and agent authentication
4
+ */
5
+ export interface ApiKey {
6
+ key: string;
7
+ agentId: string;
8
+ name: string;
9
+ createdAt: number;
10
+ expiresAt?: number;
11
+ permissions: string[];
12
+ rateLimit?: {
13
+ requestsPerMinute: number;
14
+ requestsPerHour: number;
15
+ };
16
+ }
17
+ export interface AuthConfig {
18
+ enabled: boolean;
19
+ requireApiKey: boolean;
20
+ allowedOrigins?: string[];
21
+ defaultRateLimit?: {
22
+ requestsPerMinute: number;
23
+ requestsPerHour: number;
24
+ };
25
+ }
26
+ export declare class AuthManager {
27
+ private apiKeys;
28
+ private config;
29
+ constructor(config: AuthConfig);
30
+ /**
31
+ * Generate a new API key for an agent
32
+ */
33
+ generateApiKey(agentId: string, name: string, options?: {
34
+ expiresIn?: number;
35
+ permissions?: string[];
36
+ rateLimit?: {
37
+ requestsPerMinute: number;
38
+ requestsPerHour: number;
39
+ };
40
+ }): string;
41
+ /**
42
+ * Validate an API key
43
+ */
44
+ validateApiKey(key: string): {
45
+ valid: boolean;
46
+ apiKey?: ApiKey;
47
+ reason?: string;
48
+ };
49
+ /**
50
+ * Revoke an API key
51
+ */
52
+ revokeApiKey(key: string): boolean;
53
+ /**
54
+ * List all API keys for an agent
55
+ */
56
+ listApiKeys(agentId?: string): ApiKey[];
57
+ /**
58
+ * Check if agent has permission
59
+ */
60
+ hasPermission(apiKey: ApiKey, permission: string): boolean;
61
+ /**
62
+ * Validate origin (CORS)
63
+ */
64
+ validateOrigin(origin: string): boolean;
65
+ /**
66
+ * Get rate limit for API key
67
+ */
68
+ getRateLimit(apiKey: ApiKey): {
69
+ requestsPerMinute: number;
70
+ requestsPerHour: number;
71
+ };
72
+ }
73
+ //# sourceMappingURL=AuthManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthManager.d.ts","sourceRoot":"","sources":["../../src/security/AuthManager.ts"],"names":[],"mappings":"AAEA;;;GAGG;AAEH,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE;QACV,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE;QACjB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,MAAM,CAAa;gBAEf,MAAM,EAAE,UAAU;IAI9B;;OAEG;IACH,cAAc,CACZ,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,SAAS,CAAC,EAAE;YAAE,iBAAiB,EAAE,MAAM,CAAC;YAAC,eAAe,EAAE,MAAM,CAAA;SAAE,CAAC;KACpE,GACA,MAAM;IAqBT;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;QAC3B,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB;IAuBD;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIlC;;OAEG;IACH,WAAW,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAUvC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAQ1D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAYvC;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG;QAC5B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KACzB;CASF"}
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AuthManager = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ class AuthManager {
9
+ constructor(config) {
10
+ this.apiKeys = new Map();
11
+ this.config = config;
12
+ }
13
+ /**
14
+ * Generate a new API key for an agent
15
+ */
16
+ generateApiKey(agentId, name, options) {
17
+ // Generate secure random key
18
+ const key = `lma_${crypto_1.default.randomBytes(32).toString('hex')}`;
19
+ const apiKey = {
20
+ key,
21
+ agentId,
22
+ name,
23
+ createdAt: Date.now(),
24
+ expiresAt: options?.expiresIn
25
+ ? Date.now() + options.expiresIn
26
+ : undefined,
27
+ permissions: options?.permissions || ['*'],
28
+ rateLimit: options?.rateLimit || this.config.defaultRateLimit,
29
+ };
30
+ this.apiKeys.set(key, apiKey);
31
+ return key;
32
+ }
33
+ /**
34
+ * Validate an API key
35
+ */
36
+ validateApiKey(key) {
37
+ if (!this.config.enabled || !this.config.requireApiKey) {
38
+ return { valid: true };
39
+ }
40
+ if (!key) {
41
+ return { valid: false, reason: 'API key required' };
42
+ }
43
+ const apiKey = this.apiKeys.get(key);
44
+ if (!apiKey) {
45
+ return { valid: false, reason: 'Invalid API key' };
46
+ }
47
+ // Check expiration
48
+ if (apiKey.expiresAt && Date.now() > apiKey.expiresAt) {
49
+ return { valid: false, reason: 'API key expired' };
50
+ }
51
+ return { valid: true, apiKey };
52
+ }
53
+ /**
54
+ * Revoke an API key
55
+ */
56
+ revokeApiKey(key) {
57
+ return this.apiKeys.delete(key);
58
+ }
59
+ /**
60
+ * List all API keys for an agent
61
+ */
62
+ listApiKeys(agentId) {
63
+ const keys = Array.from(this.apiKeys.values());
64
+ if (agentId) {
65
+ return keys.filter((k) => k.agentId === agentId);
66
+ }
67
+ return keys;
68
+ }
69
+ /**
70
+ * Check if agent has permission
71
+ */
72
+ hasPermission(apiKey, permission) {
73
+ if (apiKey.permissions.includes('*')) {
74
+ return true;
75
+ }
76
+ return apiKey.permissions.includes(permission);
77
+ }
78
+ /**
79
+ * Validate origin (CORS)
80
+ */
81
+ validateOrigin(origin) {
82
+ if (!this.config.allowedOrigins || this.config.allowedOrigins.length === 0) {
83
+ return true; // Allow all if not configured
84
+ }
85
+ if (this.config.allowedOrigins.includes('*')) {
86
+ return true;
87
+ }
88
+ return this.config.allowedOrigins.includes(origin);
89
+ }
90
+ /**
91
+ * Get rate limit for API key
92
+ */
93
+ getRateLimit(apiKey) {
94
+ return (apiKey.rateLimit ||
95
+ this.config.defaultRateLimit || {
96
+ requestsPerMinute: 60,
97
+ requestsPerHour: 1000,
98
+ });
99
+ }
100
+ }
101
+ exports.AuthManager = AuthManager;
102
+ //# sourceMappingURL=AuthManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthManager.js","sourceRoot":"","sources":["../../src/security/AuthManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Message Sanitizer
3
+ * Validates and sanitizes incoming messages to prevent injection attacks
4
+ */
5
+ export interface SanitizationResult {
6
+ valid: boolean;
7
+ sanitized?: any;
8
+ errors?: string[];
9
+ }
10
+ export declare class MessageSanitizer {
11
+ private maxStringLength;
12
+ private maxArrayLength;
13
+ private maxObjectDepth;
14
+ constructor(options?: {
15
+ maxStringLength?: number;
16
+ maxArrayLength?: number;
17
+ maxObjectDepth?: number;
18
+ });
19
+ /**
20
+ * Sanitize a message
21
+ */
22
+ sanitize(message: any): SanitizationResult;
23
+ /**
24
+ * Sanitize a value recursively
25
+ */
26
+ private sanitizeValue;
27
+ /**
28
+ * Sanitize a string
29
+ */
30
+ private sanitizeString;
31
+ /**
32
+ * Sanitize an array
33
+ */
34
+ private sanitizeArray;
35
+ /**
36
+ * Sanitize an object
37
+ */
38
+ private sanitizeObject;
39
+ /**
40
+ * Validate message structure
41
+ */
42
+ validateMessageStructure(message: any): {
43
+ valid: boolean;
44
+ errors?: string[];
45
+ };
46
+ /**
47
+ * Sanitize and validate a message
48
+ */
49
+ sanitizeAndValidate(message: any): SanitizationResult;
50
+ }
51
+ //# sourceMappingURL=MessageSanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageSanitizer.d.ts","sourceRoot":"","sources":["../../src/security/MessageSanitizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;gBAEnB,OAAO,CAAC,EAAE;QACpB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;IAMD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,GAAG,GAAG,kBAAkB;IAmB1C;;OAEG;IACH,OAAO,CAAC,aAAa;IA8CrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAkBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IAUrB;;OAEG;IACH,OAAO,CAAC,cAAc;IAoBtB;;OAEG;IACH,wBAAwB,CAAC,OAAO,EAAE,GAAG,GAAG;QACtC,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;KACnB;IAuCD;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,GAAG,GAAG,kBAAkB;CAatD"}