@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,42 @@
1
+ "use strict";
2
+ /**
3
+ * Security Module
4
+ * Exports all security-related components
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.DEFAULT_SECURITY_CONFIG = exports.SecurityMiddleware = exports.MessageSanitizer = exports.RateLimiter = exports.AuthManager = void 0;
8
+ var AuthManager_1 = require("./AuthManager");
9
+ Object.defineProperty(exports, "AuthManager", { enumerable: true, get: function () { return AuthManager_1.AuthManager; } });
10
+ var RateLimiter_1 = require("./RateLimiter");
11
+ Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return RateLimiter_1.RateLimiter; } });
12
+ var MessageSanitizer_1 = require("./MessageSanitizer");
13
+ Object.defineProperty(exports, "MessageSanitizer", { enumerable: true, get: function () { return MessageSanitizer_1.MessageSanitizer; } });
14
+ var SecurityMiddleware_1 = require("./SecurityMiddleware");
15
+ Object.defineProperty(exports, "SecurityMiddleware", { enumerable: true, get: function () { return SecurityMiddleware_1.SecurityMiddleware; } });
16
+ /**
17
+ * Default security configuration
18
+ */
19
+ exports.DEFAULT_SECURITY_CONFIG = {
20
+ auth: {
21
+ enabled: false, // Disabled by default for development
22
+ requireApiKey: false,
23
+ allowedOrigins: ['*'],
24
+ defaultRateLimit: {
25
+ requestsPerMinute: 60,
26
+ requestsPerHour: 1000,
27
+ },
28
+ },
29
+ rateLimit: {
30
+ enabled: true,
31
+ requestsPerMinute: 60,
32
+ requestsPerHour: 1000,
33
+ blockDuration: 60000, // 1 minute
34
+ },
35
+ sanitization: {
36
+ enabled: true,
37
+ maxStringLength: 10000,
38
+ maxArrayLength: 1000,
39
+ maxObjectDepth: 10,
40
+ },
41
+ };
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,6CAAgE;AAAvD,0GAAA,WAAW,OAAA;AACpB,6CAA6D;AAApD,0GAAA,WAAW,OAAA;AACpB,uDAA0E;AAAjE,oHAAA,gBAAgB,OAAA;AACzB,2DAA+F;AAAtF,wHAAA,kBAAkB,OAAA;AAE3B;;GAEG;AACU,QAAA,uBAAuB,GAAG;IACrC,IAAI,EAAE;QACJ,OAAO,EAAE,KAAK,EAAE,sCAAsC;QACtD,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,CAAC,GAAG,CAAC;QACrB,gBAAgB,EAAE;YAChB,iBAAiB,EAAE,EAAE;YACrB,eAAe,EAAE,IAAI;SACtB;KACF;IACD,SAAS,EAAE;QACT,OAAO,EAAE,IAAI;QACb,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,IAAI;QACrB,aAAa,EAAE,KAAK,EAAE,WAAW;KAClC;IACD,YAAY,EAAE;QACZ,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,KAAK;QACtB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,EAAE;KACnB;CACF,CAAC"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Prediction Engine - Speculative Execution v2.0
3
+ *
4
+ * Analyzes historical request patterns and predicts the next 3 most probable
5
+ * agent requests using lightweight local models (Llama 3.2 1B/3B).
6
+ *
7
+ * Features:
8
+ * - Pattern analysis from request history
9
+ * - Confidence scoring (0.0-1.0)
10
+ * - Lightweight model inference
11
+ * - Real-time prediction updates
12
+ */
13
+ import { EventEmitter } from 'events';
14
+ export interface PredictionRequest {
15
+ taskType: string;
16
+ context: string;
17
+ agentId?: string;
18
+ timestamp: number;
19
+ }
20
+ export interface Prediction {
21
+ id: string;
22
+ taskType: string;
23
+ context: string;
24
+ confidence: number;
25
+ reasoning: string;
26
+ timestamp: number;
27
+ expiresAt: number;
28
+ }
29
+ export interface PredictionEngineConfig {
30
+ ollamaUrl?: string;
31
+ modelName?: string;
32
+ maxPredictions?: number;
33
+ minConfidence?: number;
34
+ historySize?: number;
35
+ predictionTTL?: number;
36
+ }
37
+ export interface PredictionMetrics {
38
+ totalPredictions: number;
39
+ accuratePredictions: number;
40
+ accuracy: number;
41
+ averageConfidence: number;
42
+ predictionTime: number;
43
+ }
44
+ export declare class PredictionEngine extends EventEmitter {
45
+ private config;
46
+ private requestHistory;
47
+ private activePredictions;
48
+ private metrics;
49
+ constructor(config?: PredictionEngineConfig);
50
+ /**
51
+ * Record a new request in the history
52
+ */
53
+ recordRequest(request: PredictionRequest): void;
54
+ /**
55
+ * Generate predictions based on current history
56
+ */
57
+ generatePredictions(): Promise<Prediction[]>;
58
+ /**
59
+ * Check if a request matches any active prediction
60
+ */
61
+ matchPrediction(request: PredictionRequest): Prediction | null;
62
+ /**
63
+ * Analyze patterns in request history
64
+ */
65
+ private analyzePatterns;
66
+ /**
67
+ * Use lightweight model to predict next requests
68
+ */
69
+ private predictNextRequests;
70
+ /**
71
+ * Build prompt for prediction model
72
+ */
73
+ private buildPredictionPrompt;
74
+ /**
75
+ * Parse predictions from model response
76
+ */
77
+ private parsePredictions;
78
+ /**
79
+ * Calculate similarity score between request and prediction
80
+ */
81
+ private calculateMatchScore;
82
+ /**
83
+ * Simple text similarity using word overlap
84
+ */
85
+ private calculateTextSimilarity;
86
+ /**
87
+ * Get current metrics
88
+ */
89
+ getMetrics(): PredictionMetrics;
90
+ /**
91
+ * Get active predictions
92
+ */
93
+ getActivePredictions(): Prediction[];
94
+ /**
95
+ * Clear all predictions and history
96
+ */
97
+ clear(): void;
98
+ }
99
+ //# sourceMappingURL=PredictionEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PredictionEngine.d.ts","sourceRoot":"","sources":["../../src/speculative/PredictionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,iBAAiB,CAAsC;IAC/D,OAAO,CAAC,OAAO,CAMb;gBAEU,MAAM,GAAE,sBAA2B;IAY/C;;OAEG;IACI,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IActD;;OAEG;IACU,mBAAmB,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA0CzD;;OAEG;IACI,eAAe,CAAC,OAAO,EAAE,iBAAiB,GAAG,UAAU,GAAG,IAAI;IAsCrE;;OAEG;IACH,OAAO,CAAC,eAAe;IAqCvB;;OAEG;YACW,mBAAmB;IAiCjC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAiC7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA0BxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;IACI,UAAU,IAAI,iBAAiB;IAItC;;OAEG;IACI,oBAAoB,IAAI,UAAU,EAAE;IAO3C;;OAEG;IACI,KAAK,IAAI,IAAI;CAWrB"}
@@ -0,0 +1,291 @@
1
+ "use strict";
2
+ /**
3
+ * Prediction Engine - Speculative Execution v2.0
4
+ *
5
+ * Analyzes historical request patterns and predicts the next 3 most probable
6
+ * agent requests using lightweight local models (Llama 3.2 1B/3B).
7
+ *
8
+ * Features:
9
+ * - Pattern analysis from request history
10
+ * - Confidence scoring (0.0-1.0)
11
+ * - Lightweight model inference
12
+ * - Real-time prediction updates
13
+ */
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.PredictionEngine = void 0;
19
+ const events_1 = require("events");
20
+ const axios_1 = __importDefault(require("axios"));
21
+ class PredictionEngine extends events_1.EventEmitter {
22
+ constructor(config = {}) {
23
+ super();
24
+ this.requestHistory = [];
25
+ this.activePredictions = new Map();
26
+ this.metrics = {
27
+ totalPredictions: 0,
28
+ accuratePredictions: 0,
29
+ accuracy: 0,
30
+ averageConfidence: 0,
31
+ predictionTime: 0,
32
+ };
33
+ this.config = {
34
+ ollamaUrl: config.ollamaUrl || 'http://localhost:11434',
35
+ modelName: config.modelName || 'llama3.2:1b',
36
+ maxPredictions: config.maxPredictions || 3,
37
+ minConfidence: config.minConfidence || 0.6,
38
+ historySize: config.historySize || 100,
39
+ predictionTTL: config.predictionTTL || 60000,
40
+ };
41
+ }
42
+ /**
43
+ * Record a new request in the history
44
+ */
45
+ recordRequest(request) {
46
+ this.requestHistory.push(request);
47
+ // Keep history size bounded
48
+ if (this.requestHistory.length > this.config.historySize) {
49
+ this.requestHistory.shift();
50
+ }
51
+ // Trigger new predictions after recording
52
+ this.generatePredictions().catch((error) => {
53
+ this.emit('error', error);
54
+ });
55
+ }
56
+ /**
57
+ * Generate predictions based on current history
58
+ */
59
+ async generatePredictions() {
60
+ if (this.requestHistory.length < 3) {
61
+ // Not enough history to make predictions
62
+ return [];
63
+ }
64
+ const startTime = Date.now();
65
+ try {
66
+ // Analyze patterns in request history
67
+ const patterns = this.analyzePatterns();
68
+ // Generate predictions using lightweight model
69
+ const predictions = await this.predictNextRequests(patterns);
70
+ // Filter by confidence threshold
71
+ const validPredictions = predictions.filter((p) => p.confidence >= this.config.minConfidence);
72
+ // Store predictions
73
+ validPredictions.forEach((prediction) => {
74
+ this.activePredictions.set(prediction.id, prediction);
75
+ });
76
+ // Update metrics
77
+ this.metrics.totalPredictions += validPredictions.length;
78
+ this.metrics.predictionTime = Date.now() - startTime;
79
+ this.metrics.averageConfidence =
80
+ validPredictions.reduce((sum, p) => sum + p.confidence, 0) /
81
+ validPredictions.length;
82
+ // Emit predictions for worker pool
83
+ this.emit('predictions', validPredictions);
84
+ return validPredictions;
85
+ }
86
+ catch (error) {
87
+ this.emit('error', error);
88
+ return [];
89
+ }
90
+ }
91
+ /**
92
+ * Check if a request matches any active prediction
93
+ */
94
+ matchPrediction(request) {
95
+ const now = Date.now();
96
+ // Clean up expired predictions
97
+ for (const [id, prediction] of this.activePredictions.entries()) {
98
+ if (prediction.expiresAt < now) {
99
+ this.activePredictions.delete(id);
100
+ }
101
+ }
102
+ // Find best matching prediction
103
+ let bestMatch = null;
104
+ let bestScore = 0;
105
+ for (const prediction of this.activePredictions.values()) {
106
+ const score = this.calculateMatchScore(request, prediction);
107
+ if (score > bestScore && score > 0.8) {
108
+ // 80% similarity threshold
109
+ bestScore = score;
110
+ bestMatch = prediction;
111
+ }
112
+ }
113
+ if (bestMatch) {
114
+ // Update accuracy metrics
115
+ this.metrics.accuratePredictions++;
116
+ this.metrics.accuracy =
117
+ this.metrics.accuratePredictions / this.metrics.totalPredictions;
118
+ // Remove matched prediction
119
+ this.activePredictions.delete(bestMatch.id);
120
+ this.emit('prediction-hit', { request, prediction: bestMatch, score: bestScore });
121
+ }
122
+ return bestMatch;
123
+ }
124
+ /**
125
+ * Analyze patterns in request history
126
+ */
127
+ analyzePatterns() {
128
+ const taskTypeCounts = new Map();
129
+ const recentContexts = [];
130
+ const sequences = [];
131
+ // Count task types
132
+ this.requestHistory.forEach((req) => {
133
+ taskTypeCounts.set(req.taskType, (taskTypeCounts.get(req.taskType) || 0) + 1);
134
+ });
135
+ // Get most common task types
136
+ const commonTaskTypes = Array.from(taskTypeCounts.entries())
137
+ .sort((a, b) => b[1] - a[1])
138
+ .slice(0, 5)
139
+ .map(([type]) => type);
140
+ // Get recent contexts (last 10)
141
+ recentContexts.push(...this.requestHistory.slice(-10).map((req) => req.context));
142
+ // Detect sequence patterns (3-request sequences)
143
+ for (let i = 0; i < this.requestHistory.length - 2; i++) {
144
+ sequences.push([
145
+ this.requestHistory[i].taskType,
146
+ this.requestHistory[i + 1].taskType,
147
+ this.requestHistory[i + 2].taskType,
148
+ ]);
149
+ }
150
+ return { commonTaskTypes, recentContexts, sequencePatterns: sequences };
151
+ }
152
+ /**
153
+ * Use lightweight model to predict next requests
154
+ */
155
+ async predictNextRequests(patterns) {
156
+ const prompt = this.buildPredictionPrompt(patterns);
157
+ try {
158
+ const response = await axios_1.default.post(`${this.config.ollamaUrl}/api/generate`, {
159
+ model: this.config.modelName,
160
+ prompt,
161
+ stream: false,
162
+ options: {
163
+ temperature: 0.7,
164
+ top_p: 0.9,
165
+ num_predict: 500,
166
+ },
167
+ }, {
168
+ timeout: 5000, // 5 second timeout
169
+ });
170
+ const predictions = this.parsePredictions(response.data.response);
171
+ return predictions.slice(0, this.config.maxPredictions);
172
+ }
173
+ catch (error) {
174
+ console.error('Prediction generation failed:', error);
175
+ return [];
176
+ }
177
+ }
178
+ /**
179
+ * Build prompt for prediction model
180
+ */
181
+ buildPredictionPrompt(patterns) {
182
+ return `You are a predictive AI analyzing agent request patterns.
183
+
184
+ Recent request history:
185
+ - Common task types: ${patterns.commonTaskTypes.join(', ')}
186
+ - Recent contexts: ${patterns.recentContexts.slice(-3).join(' | ')}
187
+ - Detected sequences: ${patterns.sequencePatterns.slice(-3).map((s) => s.join(' → ')).join(', ')}
188
+
189
+ Based on these patterns, predict the next 3 most probable agent requests.
190
+
191
+ For each prediction, provide:
192
+ 1. Task type (e.g., "research", "summarize", "analyze")
193
+ 2. Context (brief description of what the request might be about)
194
+ 3. Confidence (0.0-1.0, how confident you are)
195
+ 4. Reasoning (why you think this request is likely)
196
+
197
+ Format your response as JSON array:
198
+ [
199
+ {
200
+ "taskType": "...",
201
+ "context": "...",
202
+ "confidence": 0.0-1.0,
203
+ "reasoning": "..."
204
+ }
205
+ ]
206
+
207
+ Respond with ONLY the JSON array, no other text.`;
208
+ }
209
+ /**
210
+ * Parse predictions from model response
211
+ */
212
+ parsePredictions(response) {
213
+ try {
214
+ // Extract JSON from response
215
+ const jsonMatch = response.match(/\[[\s\S]*\]/);
216
+ if (!jsonMatch) {
217
+ return [];
218
+ }
219
+ const parsed = JSON.parse(jsonMatch[0]);
220
+ const now = Date.now();
221
+ return parsed.map((p, index) => ({
222
+ id: `pred-${now}-${index}`,
223
+ taskType: p.taskType || 'unknown',
224
+ context: p.context || '',
225
+ confidence: Math.min(Math.max(p.confidence || 0, 0), 1),
226
+ reasoning: p.reasoning || '',
227
+ timestamp: now,
228
+ expiresAt: now + this.config.predictionTTL,
229
+ }));
230
+ }
231
+ catch (error) {
232
+ console.error('Failed to parse predictions:', error);
233
+ return [];
234
+ }
235
+ }
236
+ /**
237
+ * Calculate similarity score between request and prediction
238
+ */
239
+ calculateMatchScore(request, prediction) {
240
+ let score = 0;
241
+ // Task type exact match (40% weight)
242
+ if (request.taskType === prediction.taskType) {
243
+ score += 0.4;
244
+ }
245
+ // Context similarity (40% weight)
246
+ const contextSimilarity = this.calculateTextSimilarity(request.context, prediction.context);
247
+ score += contextSimilarity * 0.4;
248
+ // Confidence bonus (20% weight)
249
+ score += prediction.confidence * 0.2;
250
+ return score;
251
+ }
252
+ /**
253
+ * Simple text similarity using word overlap
254
+ */
255
+ calculateTextSimilarity(text1, text2) {
256
+ const words1 = new Set(text1.toLowerCase().split(/\s+/));
257
+ const words2 = new Set(text2.toLowerCase().split(/\s+/));
258
+ const intersection = new Set([...words1].filter((w) => words2.has(w)));
259
+ const union = new Set([...words1, ...words2]);
260
+ return intersection.size / union.size;
261
+ }
262
+ /**
263
+ * Get current metrics
264
+ */
265
+ getMetrics() {
266
+ return { ...this.metrics };
267
+ }
268
+ /**
269
+ * Get active predictions
270
+ */
271
+ getActivePredictions() {
272
+ const now = Date.now();
273
+ return Array.from(this.activePredictions.values()).filter((p) => p.expiresAt > now);
274
+ }
275
+ /**
276
+ * Clear all predictions and history
277
+ */
278
+ clear() {
279
+ this.requestHistory = [];
280
+ this.activePredictions.clear();
281
+ this.metrics = {
282
+ totalPredictions: 0,
283
+ accuratePredictions: 0,
284
+ accuracy: 0,
285
+ averageConfidence: 0,
286
+ predictionTime: 0,
287
+ };
288
+ }
289
+ }
290
+ exports.PredictionEngine = PredictionEngine;
291
+ //# sourceMappingURL=PredictionEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PredictionEngine.js","sourceRoot":"","sources":["../../src/speculative/PredictionEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Speculative Cache - Speculative Execution v2.0
3
+ *
4
+ * Stores pre-computed results from speculative execution with TTL-based expiration.
5
+ * Provides instant (<10ms) cache lookups for predicted requests.
6
+ *
7
+ * Features:
8
+ * - TTL-based expiration
9
+ * - Confidence-based prioritization
10
+ * - Memory-efficient storage
11
+ * - Automatic cleanup
12
+ */
13
+ import { EventEmitter } from 'events';
14
+ import { Prediction } from './PredictionEngine';
15
+ import { WorkerResult } from './WorkerPool';
16
+ export interface CacheEntry {
17
+ id: string;
18
+ prediction: Prediction;
19
+ result: any;
20
+ confidence: number;
21
+ createdAt: number;
22
+ expiresAt: number;
23
+ hits: number;
24
+ lastAccessedAt: number;
25
+ }
26
+ export interface SpeculativeCacheConfig {
27
+ maxSize?: number;
28
+ defaultTTL?: number;
29
+ cleanupInterval?: number;
30
+ maxMemoryMB?: number;
31
+ }
32
+ export interface SpeculativeCacheMetrics {
33
+ size: number;
34
+ hits: number;
35
+ misses: number;
36
+ hitRate: number;
37
+ averageHitLatency: number;
38
+ memoryUsageMB: number;
39
+ evictions: number;
40
+ }
41
+ export declare class SpeculativeCache extends EventEmitter {
42
+ private config;
43
+ private cache;
44
+ private cleanupTimer?;
45
+ private metrics;
46
+ private hitLatencies;
47
+ constructor(config?: SpeculativeCacheConfig);
48
+ /**
49
+ * Start the cache
50
+ */
51
+ start(): void;
52
+ /**
53
+ * Store a pre-computed result
54
+ */
55
+ set(result: WorkerResult): void;
56
+ /**
57
+ * Get a cached result
58
+ */
59
+ get(taskType: string, context: string): CacheEntry | null;
60
+ /**
61
+ * Find best matching entry using fuzzy matching
62
+ */
63
+ private findBestMatch;
64
+ /**
65
+ * Calculate match score between request and cached prediction
66
+ */
67
+ private calculateMatchScore;
68
+ /**
69
+ * Simple text similarity using word overlap
70
+ */
71
+ private calculateTextSimilarity;
72
+ /**
73
+ * Generate cache key from prediction
74
+ */
75
+ private generateKey;
76
+ /**
77
+ * Generate cache key from request
78
+ */
79
+ private generateKeyFromRequest;
80
+ /**
81
+ * Simple string hash function
82
+ */
83
+ private hashString;
84
+ /**
85
+ * Evict low priority entries
86
+ */
87
+ private evictLowPriority;
88
+ /**
89
+ * Cleanup expired entries
90
+ */
91
+ private cleanup;
92
+ /**
93
+ * Estimate memory usage in MB
94
+ */
95
+ private getMemoryUsageMB;
96
+ /**
97
+ * Update metrics
98
+ */
99
+ private updateMetrics;
100
+ /**
101
+ * Get current metrics
102
+ */
103
+ getMetrics(): SpeculativeCacheMetrics;
104
+ /**
105
+ * Get all entries
106
+ */
107
+ getEntries(): CacheEntry[];
108
+ /**
109
+ * Clear all entries
110
+ */
111
+ clear(): void;
112
+ /**
113
+ * Stop the cache
114
+ */
115
+ stop(): void;
116
+ }
117
+ //# sourceMappingURL=SpeculativeCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SpeculativeCache.d.ts","sourceRoot":"","sources":["../../src/speculative/SpeculativeCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,KAAK,CAAsC;IACnD,OAAO,CAAC,YAAY,CAAC,CAAiB;IACtC,OAAO,CAAC,OAAO,CAQb;IACF,OAAO,CAAC,YAAY,CAAgB;gBAExB,MAAM,GAAE,sBAA2B;IAU/C;;OAEG;IACI,KAAK,IAAI,IAAI;IASpB;;OAEG;IACI,GAAG,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAgCtC;;OAEG;IACI,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAgDhE;;OAEG;IACH,OAAO,CAAC,aAAa;IA0BrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAyB3B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAU/B;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,OAAO;IAiBf;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACI,UAAU,IAAI,uBAAuB;IAK5C;;OAEG;IACI,UAAU,IAAI,UAAU,EAAE;IAIjC;;OAEG;IACI,KAAK,IAAI,IAAI;IAepB;;OAEG;IACI,IAAI,IAAI,IAAI;CAOpB"}