@mxf-dev/core 1.0.1 → 2.0.1

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 (303) hide show
  1. package/README.md +18 -0
  2. package/dist/adapters/FrameworkAdapter.js +1 -1
  3. package/dist/adapters/FrameworkAdapter.js.map +1 -1
  4. package/dist/config/ConfigManager.d.ts +9 -8
  5. package/dist/config/ConfigManager.d.ts.map +1 -1
  6. package/dist/config/ConfigManager.js +47 -17
  7. package/dist/config/ConfigManager.js.map +1 -1
  8. package/dist/config/memory-strata.config.d.ts +25 -0
  9. package/dist/config/memory-strata.config.d.ts.map +1 -0
  10. package/dist/config/memory-strata.config.js +107 -0
  11. package/dist/config/memory-strata.config.js.map +1 -0
  12. package/dist/constants/ToolNames.d.ts +1 -29
  13. package/dist/constants/ToolNames.d.ts.map +1 -1
  14. package/dist/constants/ToolNames.js +4 -17
  15. package/dist/constants/ToolNames.js.map +1 -1
  16. package/dist/database/DatabaseAdapterFactory.d.ts +14 -2
  17. package/dist/database/DatabaseAdapterFactory.d.ts.map +1 -1
  18. package/dist/database/DatabaseAdapterFactory.js +21 -6
  19. package/dist/database/DatabaseAdapterFactory.js.map +1 -1
  20. package/dist/database/adapters/mongodb/MongoBaseRepository.d.ts +7 -1
  21. package/dist/database/adapters/mongodb/MongoBaseRepository.d.ts.map +1 -1
  22. package/dist/database/adapters/mongodb/MongoBaseRepository.js +12 -2
  23. package/dist/database/adapters/mongodb/MongoBaseRepository.js.map +1 -1
  24. package/dist/events/ClientEventBus.d.ts +16 -77
  25. package/dist/events/ClientEventBus.d.ts.map +1 -1
  26. package/dist/events/ClientEventBus.js +38 -311
  27. package/dist/events/ClientEventBus.js.map +1 -1
  28. package/dist/events/EventBus.d.ts +1 -1
  29. package/dist/events/EventBus.d.ts.map +1 -1
  30. package/dist/events/EventBus.js +5 -4
  31. package/dist/events/EventBus.js.map +1 -1
  32. package/dist/events/EventBusBase.d.ts +139 -34
  33. package/dist/events/EventBusBase.d.ts.map +1 -1
  34. package/dist/events/EventBusBase.js +366 -88
  35. package/dist/events/EventBusBase.js.map +1 -1
  36. package/dist/events/EventNames.d.ts +10 -1
  37. package/dist/events/EventNames.d.ts.map +1 -1
  38. package/dist/events/EventNames.js +3 -0
  39. package/dist/events/EventNames.js.map +1 -1
  40. package/dist/events/PublicEvents.d.ts +6 -2
  41. package/dist/events/PublicEvents.d.ts.map +1 -1
  42. package/dist/events/PublicEvents.js +7 -4
  43. package/dist/events/PublicEvents.js.map +1 -1
  44. package/dist/events/ServerEventBus.d.ts +23 -112
  45. package/dist/events/ServerEventBus.d.ts.map +1 -1
  46. package/dist/events/ServerEventBus.js +58 -323
  47. package/dist/events/ServerEventBus.js.map +1 -1
  48. package/dist/events/event-definitions/LlmBudgetEvents.d.ts +68 -0
  49. package/dist/events/event-definitions/LlmBudgetEvents.d.ts.map +1 -0
  50. package/dist/events/event-definitions/LlmBudgetEvents.js +35 -0
  51. package/dist/events/event-definitions/LlmBudgetEvents.js.map +1 -0
  52. package/dist/interfaces/IMemoryPersistence.d.ts +41 -0
  53. package/dist/interfaces/IMemoryPersistence.d.ts.map +1 -0
  54. package/dist/interfaces/IMemoryPersistence.js +15 -0
  55. package/dist/interfaces/IMemoryPersistence.js.map +1 -0
  56. package/dist/middleware/MxpMiddleware.d.ts +8 -1
  57. package/dist/middleware/MxpMiddleware.d.ts.map +1 -1
  58. package/dist/middleware/MxpMiddleware.js +42 -20
  59. package/dist/middleware/MxpMiddleware.js.map +1 -1
  60. package/dist/models/channelKey.d.ts +1 -0
  61. package/dist/models/channelKey.d.ts.map +1 -1
  62. package/dist/models/channelKey.js +5 -0
  63. package/dist/models/channelKey.js.map +1 -1
  64. package/dist/models/memoryUtility.d.ts +39 -0
  65. package/dist/models/memoryUtility.d.ts.map +1 -0
  66. package/dist/models/memoryUtility.js +39 -0
  67. package/dist/models/memoryUtility.js.map +1 -0
  68. package/dist/models/user.d.ts.map +1 -1
  69. package/dist/models/user.js +23 -1
  70. package/dist/models/user.js.map +1 -1
  71. package/dist/mxp/BinaryProtocolLayer.d.ts +24 -8
  72. package/dist/mxp/BinaryProtocolLayer.d.ts.map +1 -1
  73. package/dist/mxp/BinaryProtocolLayer.js +90 -103
  74. package/dist/mxp/BinaryProtocolLayer.js.map +1 -1
  75. package/dist/mxp/ContextCompressionEngine.d.ts +57 -10
  76. package/dist/mxp/ContextCompressionEngine.d.ts.map +1 -1
  77. package/dist/mxp/ContextCompressionEngine.js +170 -128
  78. package/dist/mxp/ContextCompressionEngine.js.map +1 -1
  79. package/dist/mxp/MxpTokenOptimizer.d.ts +7 -3
  80. package/dist/mxp/MxpTokenOptimizer.d.ts.map +1 -1
  81. package/dist/mxp/MxpTokenOptimizer.js +8 -5
  82. package/dist/mxp/MxpTokenOptimizer.js.map +1 -1
  83. package/dist/prompts/MxfAgentSystemPrompt.d.ts +1 -1
  84. package/dist/prompts/MxfAgentSystemPrompt.d.ts.map +1 -1
  85. package/dist/prompts/MxfAgentSystemPrompt.js +47 -57
  86. package/dist/prompts/MxfAgentSystemPrompt.js.map +1 -1
  87. package/dist/protocols/mcp/ToolError.d.ts +123 -0
  88. package/dist/protocols/mcp/ToolError.d.ts.map +1 -0
  89. package/dist/protocols/mcp/ToolError.js +108 -0
  90. package/dist/protocols/mcp/ToolError.js.map +1 -0
  91. package/dist/protocols/mcp/defineTool.d.ts +133 -0
  92. package/dist/protocols/mcp/defineTool.d.ts.map +1 -0
  93. package/dist/protocols/mcp/defineTool.js +236 -0
  94. package/dist/protocols/mcp/defineTool.js.map +1 -0
  95. package/dist/protocols/mcp/security/HttpTargetGuard.d.ts +38 -0
  96. package/dist/protocols/mcp/security/HttpTargetGuard.d.ts.map +1 -0
  97. package/dist/protocols/mcp/security/HttpTargetGuard.js +227 -0
  98. package/dist/protocols/mcp/security/HttpTargetGuard.js.map +1 -0
  99. package/dist/protocols/mcp/security/McpSecurityGuard.d.ts +9 -1
  100. package/dist/protocols/mcp/security/McpSecurityGuard.d.ts.map +1 -1
  101. package/dist/protocols/mcp/security/McpSecurityGuard.js +10 -2
  102. package/dist/protocols/mcp/security/McpSecurityGuard.js.map +1 -1
  103. package/dist/protocols/mcp/security/McpToolPolicy.d.ts +81 -0
  104. package/dist/protocols/mcp/security/McpToolPolicy.d.ts.map +1 -0
  105. package/dist/protocols/mcp/security/McpToolPolicy.js +202 -0
  106. package/dist/protocols/mcp/security/McpToolPolicy.js.map +1 -0
  107. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts +51 -18
  108. package/dist/protocols/mcp/services/ExternalMcpServerManager.d.ts.map +1 -1
  109. package/dist/protocols/mcp/services/ExternalMcpServerManager.js +256 -283
  110. package/dist/protocols/mcp/services/ExternalMcpServerManager.js.map +1 -1
  111. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts +39 -6
  112. package/dist/protocols/mcp/services/ExternalServerConfigs.d.ts.map +1 -1
  113. package/dist/protocols/mcp/services/ExternalServerConfigs.js +76 -18
  114. package/dist/protocols/mcp/services/ExternalServerConfigs.js.map +1 -1
  115. package/dist/protocols/mcp/tools/AnalyticsTools.js +1 -1
  116. package/dist/protocols/mcp/tools/AnalyticsTools.js.map +1 -1
  117. package/dist/protocols/mcp/tools/CodeAnalysisTools.d.ts.map +1 -1
  118. package/dist/protocols/mcp/tools/CodeAnalysisTools.js +15 -0
  119. package/dist/protocols/mcp/tools/CodeAnalysisTools.js.map +1 -1
  120. package/dist/protocols/mcp/tools/EffectivenessTools.js +3 -3
  121. package/dist/protocols/mcp/tools/EffectivenessTools.js.map +1 -1
  122. package/dist/protocols/mcp/tools/GitTools.d.ts +9 -369
  123. package/dist/protocols/mcp/tools/GitTools.d.ts.map +1 -1
  124. package/dist/protocols/mcp/tools/GitTools.js +222 -517
  125. package/dist/protocols/mcp/tools/GitTools.js.map +1 -1
  126. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts +56 -24
  127. package/dist/protocols/mcp/tools/InfrastructureTools.d.ts.map +1 -1
  128. package/dist/protocols/mcp/tools/InfrastructureTools.js +117 -26
  129. package/dist/protocols/mcp/tools/InfrastructureTools.js.map +1 -1
  130. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts +0 -3
  131. package/dist/protocols/mcp/tools/MemorySearchTools.d.ts.map +1 -1
  132. package/dist/protocols/mcp/tools/MemorySearchTools.js +58 -1
  133. package/dist/protocols/mcp/tools/MemorySearchTools.js.map +1 -1
  134. package/dist/protocols/mcp/tools/OrparTools.d.ts +8 -0
  135. package/dist/protocols/mcp/tools/OrparTools.d.ts.map +1 -1
  136. package/dist/protocols/mcp/tools/OrparTools.js +66 -0
  137. package/dist/protocols/mcp/tools/OrparTools.js.map +1 -1
  138. package/dist/protocols/mcp/tools/SafetyTools.d.ts +7 -525
  139. package/dist/protocols/mcp/tools/SafetyTools.d.ts.map +1 -1
  140. package/dist/protocols/mcp/tools/SafetyTools.js +349 -514
  141. package/dist/protocols/mcp/tools/SafetyTools.js.map +1 -1
  142. package/dist/protocols/mcp/tools/TaskPlanningTools.d.ts.map +1 -1
  143. package/dist/protocols/mcp/tools/TaskPlanningTools.js +56 -26
  144. package/dist/protocols/mcp/tools/TaskPlanningTools.js.map +1 -1
  145. package/dist/protocols/mcp/tools/TestTools.d.ts +15 -376
  146. package/dist/protocols/mcp/tools/TestTools.d.ts.map +1 -1
  147. package/dist/protocols/mcp/tools/TestTools.js +241 -363
  148. package/dist/protocols/mcp/tools/TestTools.js.map +1 -1
  149. package/dist/protocols/mcp/tools/TypeScriptTools.d.ts +6 -276
  150. package/dist/protocols/mcp/tools/TypeScriptTools.d.ts.map +1 -1
  151. package/dist/protocols/mcp/tools/TypeScriptTools.js +223 -337
  152. package/dist/protocols/mcp/tools/TypeScriptTools.js.map +1 -1
  153. package/dist/protocols/mcp/tools/WebTools.d.ts +15 -728
  154. package/dist/protocols/mcp/tools/WebTools.d.ts.map +1 -1
  155. package/dist/protocols/mcp/tools/WebTools.js +151 -257
  156. package/dist/protocols/mcp/tools/WebTools.js.map +1 -1
  157. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts +5 -3
  158. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.d.ts.map +1 -1
  159. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js +31 -6
  160. package/dist/protocols/mcp/tools/shell/ShellExecuteHandler.js.map +1 -1
  161. package/dist/schemas/EventPayloadSchema.d.ts +21 -0
  162. package/dist/schemas/EventPayloadSchema.d.ts.map +1 -1
  163. package/dist/schemas/EventPayloadSchema.js +14 -0
  164. package/dist/schemas/EventPayloadSchema.js.map +1 -1
  165. package/dist/services/BackgroundTaskManager.d.ts.map +1 -1
  166. package/dist/services/BackgroundTaskManager.js +12 -4
  167. package/dist/services/BackgroundTaskManager.js.map +1 -1
  168. package/dist/services/BrowserManager.d.ts +1 -1
  169. package/dist/services/BrowserManager.d.ts.map +1 -1
  170. package/dist/services/BrowserManager.js +26 -3
  171. package/dist/services/BrowserManager.js.map +1 -1
  172. package/dist/services/MemoryCompressor.d.ts +11 -2
  173. package/dist/services/MemoryCompressor.d.ts.map +1 -1
  174. package/dist/services/MemoryCompressor.js +8 -26
  175. package/dist/services/MemoryCompressor.js.map +1 -1
  176. package/dist/services/MemoryService.d.ts +16 -3
  177. package/dist/services/MemoryService.d.ts.map +1 -1
  178. package/dist/services/MemoryService.js +79 -55
  179. package/dist/services/MemoryService.js.map +1 -1
  180. package/dist/services/MxfMLService.d.ts +5 -0
  181. package/dist/services/MxfMLService.d.ts.map +1 -1
  182. package/dist/services/MxfMLService.js +32 -6
  183. package/dist/services/MxfMLService.js.map +1 -1
  184. package/dist/services/PredictiveAnalyticsService.d.ts +45 -9
  185. package/dist/services/PredictiveAnalyticsService.d.ts.map +1 -1
  186. package/dist/services/PredictiveAnalyticsService.js +82 -44
  187. package/dist/services/PredictiveAnalyticsService.js.map +1 -1
  188. package/dist/services/QValueManager.d.ts +7 -0
  189. package/dist/services/QValueManager.d.ts.map +1 -1
  190. package/dist/services/QValueManager.js +9 -0
  191. package/dist/services/QValueManager.js.map +1 -1
  192. package/dist/services/RewardSignalProcessor.d.ts +38 -1
  193. package/dist/services/RewardSignalProcessor.d.ts.map +1 -1
  194. package/dist/services/RewardSignalProcessor.js +109 -7
  195. package/dist/services/RewardSignalProcessor.js.map +1 -1
  196. package/dist/services/SharedStateService.d.ts +16 -2
  197. package/dist/services/SharedStateService.d.ts.map +1 -1
  198. package/dist/services/SharedStateService.js +44 -3
  199. package/dist/services/SharedStateService.js.map +1 -1
  200. package/dist/services/TaskEffectivenessService.d.ts +34 -18
  201. package/dist/services/TaskEffectivenessService.d.ts.map +1 -1
  202. package/dist/services/TaskEffectivenessService.js +91 -155
  203. package/dist/services/TaskEffectivenessService.js.map +1 -1
  204. package/dist/services/WebSearchService.d.ts.map +1 -1
  205. package/dist/services/WebSearchService.js.map +1 -1
  206. package/dist/services/dag/TaskDagService.d.ts.map +1 -1
  207. package/dist/services/dag/TaskDagService.js +2 -0
  208. package/dist/services/dag/TaskDagService.js.map +1 -1
  209. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts +7 -0
  210. package/dist/services/orpar-memory/OrparMemoryCoordinator.d.ts.map +1 -1
  211. package/dist/services/orpar-memory/OrparMemoryCoordinator.js +71 -10
  212. package/dist/services/orpar-memory/OrparMemoryCoordinator.js.map +1 -1
  213. package/dist/types/MemoryUtilityTypes.d.ts +2 -0
  214. package/dist/types/MemoryUtilityTypes.d.ts.map +1 -1
  215. package/dist/types/MemoryUtilityTypes.js.map +1 -1
  216. package/dist/utils/Logger.d.ts +43 -3
  217. package/dist/utils/Logger.d.ts.map +1 -1
  218. package/dist/utils/Logger.js +78 -36
  219. package/dist/utils/Logger.js.map +1 -1
  220. package/dist/utils/MxpEncryption.d.ts +19 -6
  221. package/dist/utils/MxpEncryption.d.ts.map +1 -1
  222. package/dist/utils/MxpEncryption.js +48 -16
  223. package/dist/utils/MxpEncryption.js.map +1 -1
  224. package/package.json +19 -4
  225. package/src/adapters/FrameworkAdapter.ts +1 -1
  226. package/src/config/ConfigManager.ts +52 -19
  227. package/src/config/memory-strata.config.ts +136 -0
  228. package/src/constants/ToolNames.ts +4 -18
  229. package/src/database/DatabaseAdapterFactory.ts +23 -6
  230. package/src/database/adapters/mongodb/MongoBaseRepository.ts +16 -2
  231. package/src/events/ClientEventBus.ts +68 -403
  232. package/src/events/EventBus.ts +7 -8
  233. package/src/events/EventBusBase.ts +479 -116
  234. package/src/events/EventNames.ts +6 -0
  235. package/src/events/PublicEvents.ts +7 -4
  236. package/src/events/ServerEventBus.ts +78 -473
  237. package/src/events/event-definitions/LlmBudgetEvents.ts +74 -0
  238. package/src/interfaces/IMemoryPersistence.ts +51 -0
  239. package/src/middleware/MxpMiddleware.ts +51 -24
  240. package/src/models/channelKey.ts +18 -4
  241. package/src/models/memoryUtility.ts +64 -0
  242. package/src/models/user.ts +36 -4
  243. package/src/mxp/BinaryProtocolLayer.ts +108 -124
  244. package/src/mxp/ContextCompressionEngine.ts +219 -161
  245. package/src/mxp/MxpTokenOptimizer.ts +10 -10
  246. package/src/prompts/MxfAgentSystemPrompt.ts +45 -55
  247. package/src/protocols/mcp/ToolError.ts +201 -0
  248. package/src/protocols/mcp/defineTool.ts +379 -0
  249. package/src/protocols/mcp/security/HttpTargetGuard.ts +267 -0
  250. package/src/protocols/mcp/security/McpSecurityGuard.ts +10 -3
  251. package/src/protocols/mcp/security/McpToolPolicy.ts +221 -0
  252. package/src/protocols/mcp/services/ExternalMcpServerManager.ts +340 -322
  253. package/src/protocols/mcp/services/ExternalServerConfigs.ts +82 -19
  254. package/src/protocols/mcp/tools/AnalyticsTools.ts +1 -1
  255. package/src/protocols/mcp/tools/CodeAnalysisTools.ts +15 -0
  256. package/src/protocols/mcp/tools/EffectivenessTools.ts +3 -3
  257. package/src/protocols/mcp/tools/GitTools.ts +290 -569
  258. package/src/protocols/mcp/tools/InfrastructureTools.ts +189 -43
  259. package/src/protocols/mcp/tools/MemorySearchTools.ts +77 -1
  260. package/src/protocols/mcp/tools/OrparTools.ts +87 -0
  261. package/src/protocols/mcp/tools/SafetyTools.ts +501 -579
  262. package/src/protocols/mcp/tools/TaskPlanningTools.ts +81 -39
  263. package/src/protocols/mcp/tools/TestTools.ts +339 -419
  264. package/src/protocols/mcp/tools/TypeScriptTools.ts +316 -376
  265. package/src/protocols/mcp/tools/WebTools.ts +209 -307
  266. package/src/protocols/mcp/tools/shell/ShellExecuteHandler.ts +53 -14
  267. package/src/schemas/EventPayloadSchema.ts +37 -0
  268. package/src/services/BackgroundTaskManager.ts +12 -4
  269. package/src/services/BrowserManager.ts +41 -1
  270. package/src/services/MemoryCompressor.ts +20 -32
  271. package/src/services/MemoryService.ts +96 -58
  272. package/src/services/MxfMLService.ts +41 -7
  273. package/src/services/PredictiveAnalyticsService.ts +101 -51
  274. package/src/services/QValueManager.ts +10 -0
  275. package/src/services/RewardSignalProcessor.ts +138 -9
  276. package/src/services/SharedStateService.ts +56 -8
  277. package/src/services/TaskEffectivenessService.ts +114 -187
  278. package/src/services/WebSearchService.ts +2 -1
  279. package/src/services/dag/TaskDagService.ts +2 -0
  280. package/src/services/orpar-memory/OrparMemoryCoordinator.ts +86 -10
  281. package/src/types/MemoryUtilityTypes.ts +2 -0
  282. package/src/utils/Logger.ts +116 -40
  283. package/src/utils/MxpEncryption.ts +69 -34
  284. package/dist/mxp/MxpEventForwardingEnhancer.d.ts +0 -134
  285. package/dist/mxp/MxpEventForwardingEnhancer.d.ts.map +0 -1
  286. package/dist/mxp/MxpEventForwardingEnhancer.js +0 -361
  287. package/dist/mxp/MxpEventForwardingEnhancer.js.map +0 -1
  288. package/dist/protocols/mcp/services/ToolSchemaEnhancements.d.ts +0 -56
  289. package/dist/protocols/mcp/services/ToolSchemaEnhancements.d.ts.map +0 -1
  290. package/dist/protocols/mcp/services/ToolSchemaEnhancements.js +0 -57
  291. package/dist/protocols/mcp/services/ToolSchemaEnhancements.js.map +0 -1
  292. package/dist/protocols/mcp/tools/ControlLoopLifecycle.d.ts +0 -270
  293. package/dist/protocols/mcp/tools/ControlLoopLifecycle.d.ts.map +0 -1
  294. package/dist/protocols/mcp/tools/ControlLoopLifecycle.js +0 -256
  295. package/dist/protocols/mcp/tools/ControlLoopLifecycle.js.map +0 -1
  296. package/dist/protocols/mcp/tools/LspTools.d.ts +0 -495
  297. package/dist/protocols/mcp/tools/LspTools.d.ts.map +0 -1
  298. package/dist/protocols/mcp/tools/LspTools.js +0 -469
  299. package/dist/protocols/mcp/tools/LspTools.js.map +0 -1
  300. package/src/mxp/MxpEventForwardingEnhancer.ts +0 -471
  301. package/src/protocols/mcp/services/ToolSchemaEnhancements.ts +0 -92
  302. package/src/protocols/mcp/tools/ControlLoopLifecycle.ts +0 -302
  303. package/src/protocols/mcp/tools/LspTools.ts +0 -476
@@ -41,8 +41,19 @@ export class BinaryProtocolLayer {
41
41
  // Compression thresholds and settings
42
42
  compressionThresholds = {
43
43
  minSize: 1024, // Only compress messages > 1KB
44
- brotliThreshold: 10240, // Use Brotli for messages > 10KB
45
- gzipThreshold: 1024 // Use Gzip for smaller messages
44
+ brotliThreshold: 10240 // Use Brotli for messages > 10KB
45
+ };
46
+ /** Counters for getCompressionStats(). Updated on every encode. */
47
+ stats = {
48
+ totalCompressions: 0,
49
+ totalOriginalBytes: 0,
50
+ totalCompressedBytes: 0,
51
+ algorithmUsage: {
52
+ none: 0,
53
+ gzip: 0,
54
+ brotli: 0,
55
+ msgpack: 0
56
+ }
46
57
  };
47
58
  constructor() {
48
59
  this.logger = new Logger('info', 'BinaryProtocolLayer', 'server');
@@ -118,6 +129,11 @@ export class BinaryProtocolLayer {
118
129
  default:
119
130
  throw new Error(`Unknown encoding format: ${format}`);
120
131
  }
132
+ // Record the measured result so getCompressionStats() reports reality
133
+ this.stats.totalCompressions++;
134
+ this.stats.totalOriginalBytes += originalSize;
135
+ this.stats.totalCompressedBytes += result.compressedSize;
136
+ this.stats.algorithmUsage[result.algorithm]++;
121
137
  // Emit compression event for analytics using proper payload creator
122
138
  const bandwidthEventPayload = createMxpBandwidthOptimizationEventPayload(Events.Mxp.BANDWIDTH_OPTIMIZATION_COMPLETE, agentId || 'system', channelId, {
123
139
  operationId: crypto.randomUUID(),
@@ -128,72 +144,64 @@ export class BinaryProtocolLayer {
128
144
  timestamp: Date.now()
129
145
  }, { source: 'BinaryProtocolLayer' });
130
146
  EventBus.server.emit(Events.Mxp.BANDWIDTH_OPTIMIZATION_COMPLETE, bandwidthEventPayload);
131
- // format: result.format,
132
- // algorithm: result.algorithm,
133
- // originalSize,
134
- // compressedSize: result.compressedSize,
135
- // compressionRatio: result.compressionRatio,
136
- // bandwidthSaved: originalSize - result.compressedSize
137
- // });
138
147
  return result;
139
148
  }
140
149
  catch (error) {
150
+ const message_ = error instanceof Error ? error.message : String(error);
141
151
  this.logger.error('Message encoding failed', {
142
- error: error instanceof Error ? error.message : String(error),
152
+ error: message_,
143
153
  channelId,
144
154
  messageType: message.type
145
155
  });
146
- // Fallback: return original JSON
147
- const jsonData = JSON.stringify(message);
148
- const originalBuffer = Buffer.from(jsonData, 'utf8');
149
- return {
150
- data: originalBuffer,
151
- format: 'json',
152
- algorithm: 'none',
153
- originalSize: originalBuffer.length,
154
- compressedSize: originalBuffer.length,
155
- compressionRatio: 1.0
156
- };
156
+ // No silent fallback to plain JSON: the caller asked for an encoded
157
+ // message and must find out that it did not get one.
158
+ throw new Error(`Binary protocol encoding failed for '${message.type}': ${message_}`);
157
159
  }
158
160
  }
159
161
  /**
160
- * Decode compressed message back to original format
162
+ * Decode an encoded message back to its original form.
163
+ *
164
+ * @throws If the payload cannot be decoded. A corrupt message is an error,
165
+ * not an empty result.
161
166
  */
162
167
  decodeMessage(compressedData) {
163
168
  try {
164
- let message;
165
169
  switch (compressedData.format) {
166
- case 'json':
167
- // Plain JSON
170
+ case 'json': {
168
171
  const jsonString = compressedData.data.toString('utf8');
169
- message = JSON.parse(jsonString);
170
- break;
172
+ return JSON.parse(jsonString);
173
+ }
171
174
  case 'msgpack':
172
- // MessagePack format
173
- message = msgpack.decode(compressedData.data);
174
- break;
175
- case 'msgpack-compressed':
176
- // MessagePack + Brotli compression
175
+ return msgpack.decode(compressedData.data);
176
+ case 'msgpack-compressed': {
177
177
  const decompressedMsgpack = zlib.brotliDecompressSync(compressedData.data);
178
- message = msgpack.decode(decompressedMsgpack);
179
- break;
178
+ return msgpack.decode(decompressedMsgpack);
179
+ }
180
180
  default:
181
181
  throw new Error(`Unknown encoding format: ${compressedData.format}`);
182
182
  }
183
- // ;
184
- return message;
185
183
  }
186
184
  catch (error) {
185
+ const message = error instanceof Error ? error.message : String(error);
187
186
  this.logger.error('Message decoding failed', {
188
- error: error instanceof Error ? error.message : String(error),
187
+ error: message,
189
188
  format: compressedData.format,
190
189
  algorithm: compressedData.algorithm
191
190
  });
192
- return null;
191
+ throw new Error(`Binary protocol decoding failed (${compressedData.format}): ${message}`);
193
192
  }
194
193
  }
195
194
  /**
196
- * Batch compress multiple messages with intelligent batching
195
+ * Encode a group of messages as one or more batches.
196
+ *
197
+ * Batches that exceed maxBatchSize are split in half recursively until each
198
+ * part fits, and EVERY part is returned. An earlier version encoded only the
199
+ * first half and discarded the rest, silently losing messages.
200
+ *
201
+ * @returns One CompressionResult per batch, or null when bandwidth
202
+ * optimization is disabled or there is nothing to send.
203
+ * @throws If a batch cannot be encoded, or a single message is too large to
204
+ * fit in maxBatchSize on its own.
197
205
  */
198
206
  batchEncode(messages, channelId, agentId, options = {}) {
199
207
  this.validator.assertIsArray(messages, 'Messages must be an array');
@@ -206,46 +214,35 @@ export class BinaryProtocolLayer {
206
214
  return null;
207
215
  }
208
216
  const maxBatchSize = options.maxBatchSize || 32768; // 32KB default
209
- try {
210
- // Create batch envelope
211
- const batchMessage = {
212
- type: 'mxp_batch',
213
- payload: {
214
- version: '2.0',
215
- messageCount: messages.length,
216
- messages: messages
217
- },
218
- metadata: {
219
- batchId: `batch_${uuidv4()}`,
220
- timestamp: Date.now(),
221
- compressionLevel: options.compressionLevel || 'standard'
222
- }
223
- };
224
- // Check if batch exceeds size limit
225
- const batchJson = JSON.stringify(batchMessage);
226
- const batchBuffer = Buffer.from(batchJson, 'utf8');
227
- if (batchBuffer.length > maxBatchSize) {
228
- this.logger.warn(`Batch size ${batchBuffer.length} exceeds limit ${maxBatchSize}, splitting`);
229
- // Split into smaller batches (recursive approach)
230
- const midpoint = Math.floor(messages.length / 2);
231
- const firstHalf = messages.slice(0, midpoint);
232
- const secondHalf = messages.slice(midpoint);
233
- // Process first half only for now (in full implementation would handle both)
234
- return this.batchEncode(firstHalf, channelId, agentId, options);
235
- }
236
- // Compress the batch
237
- const compressionResult = this.encodeMessage(batchMessage, channelId, agentId);
238
- if (compressionResult) {
217
+ // Create batch envelope
218
+ const batchMessage = {
219
+ type: 'mxp_batch',
220
+ payload: {
221
+ version: '2.0',
222
+ messageCount: messages.length,
223
+ messages: messages
224
+ },
225
+ metadata: {
226
+ batchId: `batch_${uuidv4()}`,
227
+ timestamp: Date.now(),
228
+ compressionLevel: options.compressionLevel || 'standard'
239
229
  }
240
- return compressionResult;
230
+ };
231
+ // Check if batch exceeds size limit
232
+ const batchBuffer = Buffer.from(JSON.stringify(batchMessage), 'utf8');
233
+ if (batchBuffer.length <= maxBatchSize) {
234
+ const encoded = this.encodeMessage(batchMessage, channelId, agentId);
235
+ return encoded ? [encoded] : null;
241
236
  }
242
- catch (error) {
243
- this.logger.error('Batch encoding failed', {
244
- error: error instanceof Error ? error.message : String(error),
245
- messageCount: messages.length
246
- });
247
- return null;
237
+ if (messages.length === 1) {
238
+ throw new Error(`Message '${messages[0].type}' is ${batchBuffer.length} bytes, which exceeds the ` +
239
+ `maximum batch size of ${maxBatchSize} bytes and cannot be split further.`);
248
240
  }
241
+ this.logger.warn(`Batch size ${batchBuffer.length} exceeds limit ${maxBatchSize}, splitting`);
242
+ const midpoint = Math.floor(messages.length / 2);
243
+ const firstHalf = this.batchEncode(messages.slice(0, midpoint), channelId, agentId, options);
244
+ const secondHalf = this.batchEncode(messages.slice(midpoint), channelId, agentId, options);
245
+ return [...(firstHalf ?? []), ...(secondHalf ?? [])];
249
246
  }
250
247
  /**
251
248
  * Select optimal encoding format based on message characteristics
@@ -273,40 +270,30 @@ export class BinaryProtocolLayer {
273
270
  return MxpConfigManager.getInstance().isFeatureEnabled(channelId, 'bandwidthOptimization', agentId);
274
271
  }
275
272
  /**
276
- * Get compression statistics for monitoring
273
+ * Compression statistics measured from the encodes this instance performed.
274
+ *
275
+ * averageCompressionRatio is compressedBytes/originalBytes across all
276
+ * encodes (1.0 = no reduction), and is 0 before anything has been encoded.
277
277
  */
278
278
  getCompressionStats() {
279
- // In full implementation, these would be tracked
279
+ const { totalCompressions, totalOriginalBytes, totalCompressedBytes } = this.stats;
280
280
  return {
281
- totalCompressions: 0,
282
- averageCompressionRatio: 0.3, // 70% reduction typical
283
- totalBandwidthSaved: 0,
284
- algorithmUsage: {
285
- 'none': 0,
286
- 'gzip': 0,
287
- 'brotli': 0,
288
- 'msgpack': 0
289
- }
281
+ totalCompressions,
282
+ averageCompressionRatio: totalOriginalBytes > 0
283
+ ? totalCompressedBytes / totalOriginalBytes
284
+ : 0,
285
+ totalBandwidthSaved: totalOriginalBytes - totalCompressedBytes,
286
+ algorithmUsage: { ...this.stats.algorithmUsage }
290
287
  };
291
288
  }
292
289
  /**
293
- * Create streaming compression for real-time communication
294
- * Placeholder for future implementation with Socket.IO streaming
290
+ * Reset the compression counters (used by tests).
295
291
  */
296
- createCompressionStream(channelId, agentId) {
297
- // Check if compression is enabled
298
- if (!this.shouldApplyCompression(channelId, agentId)) {
299
- return null;
300
- }
301
- // In full implementation, would return Transform stream
302
- // For now, return configuration object
303
- return {
304
- channelId,
305
- agentId,
306
- compressionEnabled: true,
307
- algorithm: 'gzip', // Start with gzip for streaming
308
- flushInterval: 100 // Flush every 100ms for low latency
309
- };
292
+ resetCompressionStats() {
293
+ this.stats.totalCompressions = 0;
294
+ this.stats.totalOriginalBytes = 0;
295
+ this.stats.totalCompressedBytes = 0;
296
+ this.stats.algorithmUsage = { none: 0, gzip: 0, brotli: 0, msgpack: 0 };
310
297
  }
311
298
  }
312
299
  // Note: Use BinaryProtocolLayer.getInstance() to get the singleton instance
@@ -1 +1 @@
1
- {"version":3,"file":"BinaryProtocolLayer.js","sourceRoot":"","sources":["../../src/mxp/BinaryProtocolLayer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH;;;;;;GAMG;AAEH,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,0CAA0C,EAAE,MAAM,kCAAkC,CAAC;AAC9F,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAC;AAC5C,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAsB5B,MAAM,OAAO,mBAAmB;IACpB,MAAM,CAAC,QAAQ,GAA+B,IAAI,CAAC;IAE1C,MAAM,CAAS;IACf,SAAS,GAAG,qBAAqB,CAAC,qBAAqB,CAAC,CAAC;IAE1E,sCAAsC;IACrB,qBAAqB,GAAG;QACrC,OAAO,EAAE,IAAI,EAAO,+BAA+B;QACnD,eAAe,EAAE,KAAK,EAAG,iCAAiC;QAC1D,aAAa,EAAE,IAAI,CAAM,gCAAgC;KAC5D,CAAC;IAEF;QACI,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,qBAAqB,EAAE,QAAQ,CAAC,CAAC;IACtE,CAAC;IAED;;OAEG;IACI,MAAM,CAAC,WAAW;QACrB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;YAChC,mBAAmB,CAAC,QAAQ,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC7D,CAAC;QACD,OAAO,mBAAmB,CAAC,QAAQ,CAAC;IACxC,CAAC;IAED;;;OAGG;IACI,aAAa,CAChB,OAAmB,EACnB,SAAiB,EACjB,OAAgB;QAEhB,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC;QACpE,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;QAE3E,6CAA6C;QAC7C,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CACzE,SAAS,EACT,uBAAuB,EACvB,OAAO,CACV,CAAC;QAEF,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC,CAAC,4CAA4C;QAC7D,CAAC;QAED,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAE7B,kCAAkC;YAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC;YAE3C,IAAI;YAEJ,oCAAoC;YACpC,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;YAC/D,IAAI,MAAyB,CAAC;YAE9B,QAAQ,MAAM,EAAE,CAAC;gBACb,KAAK,MAAM;oBACP,2CAA2C;oBAC3C,MAAM,GAAG;wBACL,IAAI,EAAE,cAAc;wBACpB,MAAM,EAAE,MAAM;wBACd,SAAS,EAAE,MAAM;wBACjB,YAAY;wBACZ,cAAc,EAAE,YAAY;wBAC5B,gBAAgB,EAAE,GAAG;qBACxB,CAAC;oBACF,MAAM;gBAEV,KAAK,SAAS;oBACV,iEAAiE;oBACjE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBACzD,MAAM,GAAG;wBACL,IAAI,EAAE,WAAW;wBACjB,MAAM,EAAE,SAAS;wBACjB,SAAS,EAAE,SAAS;wBACpB,YAAY;wBACZ,cAAc,EAAE,WAAW,CAAC,MAAM;wBAClC,gBAAgB,EAAE,WAAW,CAAC,MAAM,GAAG,YAAY;qBACtD,CAAC;oBACF,MAAM;gBAEV,KAAK,oBAAoB;oBACrB,oDAAoD;oBACpD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC3D,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;oBAC9D,MAAM,GAAG;wBACL,IAAI,EAAE,cAAc;wBACpB,MAAM,EAAE,oBAAoB;wBAC5B,SAAS,EAAE,QAAQ;wBACnB,YAAY;wBACZ,cAAc,EAAE,cAAc,CAAC,MAAM;wBACrC,gBAAgB,EAAE,cAAc,CAAC,MAAM,GAAG,YAAY;qBACzD,CAAC;oBACF,MAAM;gBAEV;oBACI,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;YAC9D,CAAC;YAED,oEAAoE;YACpE,MAAM,qBAAqB,GAAG,0CAA0C,CACpE,MAAM,CAAC,GAAG,CAAC,+BAA+B,EAC1C,OAAO,IAAI,QAAQ,EACnB,SAAS,EACT;gBACI,WAAW,EAAE,MAAM,CAAC,UAAU,EAAE;gBAChC,YAAY;gBACZ,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,QAAQ,EAAE,MAAM,CAAC,MAA8D;gBAC/E,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACxB,EACD,EAAE,MAAM,EAAE,qBAAqB,EAAE,CACpC,CAAC;YACF,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,EAAE,qBAAqB,CAAC,CAAC;YAExF,6BAA6B;YAC7B,mCAAmC;YACnC,oBAAoB;YACpB,6CAA6C;YAC7C,iDAAiD;YACjD,2DAA2D;YAC3D,MAAM;YAEN,OAAO,MAAM,CAAC;QAElB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;gBACzC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,SAAS;gBACT,WAAW,EAAE,OAAO,CAAC,IAAI;aAC5B,CAAC,CAAC;YAEH,iCAAiC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrD,OAAO;gBACH,IAAI,EAAE,cAAc;gBACpB,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,MAAM;gBACjB,YAAY,EAAE,cAAc,CAAC,MAAM;gBACnC,cAAc,EAAE,cAAc,CAAC,MAAM;gBACrC,gBAAgB,EAAE,GAAG;aACxB,CAAC;QACN,CAAC;IACL,CAAC;IAED;;OAEG;IACI,aAAa,CAAC,cAAiC;QAClD,IAAI,CAAC;YACD,IAAI,OAAmB,CAAC;YAExB,QAAQ,cAAc,CAAC,MAAM,EAAE,CAAC;gBAC5B,KAAK,MAAM;oBACP,aAAa;oBACb,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACxD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAe,CAAC;oBAC/C,MAAM;gBAEV,KAAK,SAAS;oBACV,qBAAqB;oBACrB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAe,CAAC;oBAC5D,MAAM;gBAEV,KAAK,oBAAoB;oBACrB,mCAAmC;oBACnC,MAAM,mBAAmB,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAC3E,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAe,CAAC;oBAC5D,MAAM;gBAEV;oBACI,MAAM,IAAI,KAAK,CAAC,4BAA4B,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;YAC7E,CAAC;YAED,IAAI;YAEJ,OAAO,OAAO,CAAC;QAEnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE;gBACzC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,MAAM,EAAE,cAAc,CAAC,MAAM;gBAC7B,SAAS,EAAE,cAAc,CAAC,SAAS;aACtC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACI,WAAW,CACd,QAAsB,EACtB,SAAiB,EACjB,OAAgB,EAChB,UAGI,EAAE;QAEN,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,QAAQ,EAAE,2BAA2B,CAAC,CAAC;QAEpE,6CAA6C;QAC7C,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CACzE,SAAS,EACT,uBAAuB,EACvB,OAAO,CACV,CAAC;QAEF,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACzB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QAChB,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC,eAAe;QAEnE,IAAI,CAAC;YACD,wBAAwB;YACxB,MAAM,YAAY,GAAe;gBAC7B,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE;oBACL,OAAO,EAAE,KAAK;oBACd,YAAY,EAAE,QAAQ,CAAC,MAAM;oBAC7B,QAAQ,EAAE,QAAQ;iBACrB;gBACD,QAAQ,EAAE;oBACN,OAAO,EAAE,SAAS,MAAM,EAAE,EAAE;oBAC5B,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;oBACrB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,UAAU;iBAC3D;aACJ,CAAC;YAEF,oCAAoC;YACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC/C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAEnD,IAAI,WAAW,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,WAAW,CAAC,MAAM,kBAAkB,YAAY,aAAa,CAAC,CAAC;gBAE9F,kDAAkD;gBAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBAC9C,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAE5C,6EAA6E;gBAC7E,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACpE,CAAC;YAED,qBAAqB;YACrB,MAAM,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAE/E,IAAI,iBAAiB,EAAE,CAAC;YACxB,CAAC;YAED,OAAO,iBAAiB,CAAC;QAE7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE;gBACvC,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBAC7D,YAAY,EAAE,QAAQ,CAAC,MAAM;aAChC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,OAAmB,EAAE,IAAY;QACzD,oDAAoD;QACpD,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,CAAC;YAC5C,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,mDAAmD;QACnD,IAAI,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,CAAC;YACpD,OAAO,oBAAoB,CAAC;QAChC,CAAC;QAED,oDAAoD;QACpD,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,oBAAoB,CAAC;QAChC,CAAC;QAED,gEAAgE;QAChE,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;OAEG;IACI,sBAAsB,CAAC,SAAiB,EAAE,OAAgB;QAC7D,OAAO,gBAAgB,CAAC,WAAW,EAAE,CAAC,gBAAgB,CAClD,SAAS,EACT,uBAAuB,EACvB,OAAO,CACV,CAAC;IACN,CAAC;IAED;;OAEG;IACI,mBAAmB;QAMtB,iDAAiD;QACjD,OAAO;YACH,iBAAiB,EAAE,CAAC;YACpB,uBAAuB,EAAE,GAAG,EAAE,wBAAwB;YACtD,mBAAmB,EAAE,CAAC;YACtB,cAAc,EAAE;gBACZ,MAAM,EAAE,CAAC;gBACT,MAAM,EAAE,CAAC;gBACT,QAAQ,EAAE,CAAC;gBACX,SAAS,EAAE,CAAC;aACf;SACJ,CAAC;IACN,CAAC;IAED;;;OAGG;IACI,uBAAuB,CAAC,SAAiB,EAAE,OAAgB;QAC9D,kCAAkC;QAClC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;YACnD,OAAO,IAAI,CAAC;QAChB,CAAC;QAGD,wDAAwD;QACxD,uCAAuC;QACvC,OAAO;YACH,SAAS;YACT,OAAO;YACP,kBAAkB,EAAE,IAAI;YACxB,SAAS,EAAE,MAAM,EAAE,gCAAgC;YACnD,aAAa,EAAE,GAAG,CAAE,oCAAoC;SAC3D,CAAC;IACN,CAAC;;AAGL,4EAA4E"}
1
+ {"version":3,"file":"BinaryProtocolLayer.js","sourceRoot":"","sources":["../../src/mxp/BinaryProtocolLayer.ts"],"names":[],"mappings":"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"}
@@ -20,17 +20,25 @@
20
20
  import { ChannelMessage, AgentMessage } from '../schemas/MessageSchemas.js';
21
21
  import { ConversationMessage } from '../interfaces/ConversationMessage.js';
22
22
  export interface CompressedContext {
23
+ /** The most recent messages, kept verbatim. */
23
24
  recent: any[];
25
+ /** Structured summary standing in for the older messages. Lossy. */
24
26
  compressed: string;
27
+ /** Measured token estimate of the messages that were summarized. */
25
28
  originalTokens: number;
29
+ /** Measured token estimate of the summary that replaced them. */
26
30
  compressedTokens: number;
31
+ /** compressedTokens / originalTokens, measured after the fact. */
27
32
  ratio: number;
33
+ /** Reference IDs for context stored instead of summarized. */
28
34
  contextReferences: string[];
29
35
  }
30
36
  export interface CompressionOptions {
37
+ /** Number of recent messages kept verbatim (default: 5). */
31
38
  windowSize?: number;
32
- compressionRatio?: number;
39
+ /** Terms that must appear in the summary even if no section captured them. */
33
40
  preserveKeywords?: string[];
41
+ /** Store large blocks as retrievable references instead of summarizing. */
34
42
  useContextReferences?: boolean;
35
43
  channelId: string;
36
44
  agentId?: string;
@@ -41,14 +49,25 @@ export declare class ContextCompressionEngine {
41
49
  private readonly validator;
42
50
  private contextCache;
43
51
  private readonly maxCacheSize;
52
+ /** Counters for getCompressionStats(). Updated on every compression. */
53
+ private readonly stats;
44
54
  private constructor();
45
55
  /**
46
56
  * Get the singleton instance of ContextCompressionEngine
47
57
  */
48
58
  static getInstance(): ContextCompressionEngine;
49
59
  /**
50
- * Compress conversation history using intelligent sliding window approach
51
- * Only processes if context compression is enabled for the channel/agent
60
+ * Replace older conversation history with a structured summary, keeping the
61
+ * most recent `windowSize` messages verbatim.
62
+ *
63
+ * This is LOSSY: detail in the older messages that no summary section
64
+ * captures is discarded. The returned token counts and ratio are measured,
65
+ * not projected, so the caller can see how much was dropped.
66
+ *
67
+ * @returns null when context compression is disabled for this channel/agent.
68
+ * @throws If summarization fails. There is no "return the recent messages and
69
+ * pretend it worked" path — a caller that thinks it has the earlier
70
+ * context when it does not will act on missing information.
52
71
  */
53
72
  compressConversation(messages: (ChannelMessage | AgentMessage)[], options: CompressionOptions): Promise<CompressedContext | null>;
54
73
  /**
@@ -60,16 +79,36 @@ export declare class ContextCompressionEngine {
60
79
  */
61
80
  getContextByReference(contextId: string): any[] | null;
62
81
  /**
63
- * Apply semantic deduplication to remove similar messages
64
- * This is a simplified version - in full implementation would use PatternLearningService
82
+ * Drop messages whose content is identical to one already seen.
83
+ *
84
+ * This is an exact-match filter: content is lowercased, stripped of
85
+ * punctuation and repeated whitespace, then hashed. Messages that merely
86
+ * say the same thing in different words are both kept — there is no
87
+ * semantic similarity here, and the method no longer claims otherwise.
88
+ */
89
+ private removeExactDuplicates;
90
+ /**
91
+ * Summarize messages into a structured digest.
92
+ *
93
+ * Delegates to StructuredSummaryBuilder, which extracts the primary request,
94
+ * key decisions, tool executions, errors, verbatim user directives, and
95
+ * current state. Deterministic, local, and lossy — no model is called.
96
+ *
97
+ * @throws If the summary cannot be built.
98
+ */
99
+ private summarizeMessages;
100
+ /**
101
+ * Adapt a ChannelMessage/AgentMessage onto the ConversationMessage shape the
102
+ * summary builder consumes.
65
103
  */
66
- private applySemanticDeduplication;
104
+ private toConversationMessage;
67
105
  /**
68
- * Compress content using SystemLLM (placeholder - integrates with existing SystemLlmService)
106
+ * Pull the text out of the message shapes that flow through the framework.
107
+ * Returns null when there is no readable content.
69
108
  */
70
- private compressWithSystemLLM;
109
+ private extractContent;
71
110
  /**
72
- * Normalize message content for deduplication
111
+ * Normalize message content for exact-duplicate detection
73
112
  */
74
113
  private normalizeContent;
75
114
  /**
@@ -81,7 +120,11 @@ export declare class ContextCompressionEngine {
81
120
  */
82
121
  shouldApplyCompression(channelId: string, agentId?: string): boolean;
83
122
  /**
84
- * Get compression statistics for monitoring
123
+ * Compression statistics measured from the work this instance actually did.
124
+ *
125
+ * averageCompressionRatio is summarizedTokens/originalTokens across every
126
+ * compression (1.0 = no reduction), and is 0 before anything has been
127
+ * compressed.
85
128
  */
86
129
  getCompressionStats(): {
87
130
  totalCompressions: number;
@@ -89,6 +132,10 @@ export declare class ContextCompressionEngine {
89
132
  cacheSize: number;
90
133
  contextReferencesCreated: number;
91
134
  };
135
+ /**
136
+ * Reset the compression counters (used by tests).
137
+ */
138
+ resetCompressionStats(): void;
92
139
  /**
93
140
  * Clear the context cache (useful for testing or memory management)
94
141
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ContextCompressionEngine.d.ts","sourceRoot":"","sources":["../../src/mxp/ContextCompressionEngine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAcH,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAU5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAE3E,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,wBAAwB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyC;IAEhE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAqD;IAC/E,OAAO,CAAC,YAAY,CAA0B;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAO;IAEpC,OAAO;IAIP;;OAEG;WACW,WAAW,IAAI,wBAAwB;IAOrD;;;OAGG;IACU,oBAAoB,CAC7B,QAAQ,EAAE,CAAC,cAAc,GAAG,YAAY,CAAC,EAAE,EAC3C,OAAO,EAAE,kBAAkB,GAC5B,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAwIpC;;OAEG;YACW,sBAAsB;IA0BpC;;OAEG;IACI,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,EAAE,GAAG,IAAI;IAU7D;;;OAGG;YACW,0BAA0B;IAkCxC;;OAEG;YACW,qBAAqB;IAyCnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,cAAc;IAatB;;OAEG;IACI,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO;IAQ3E;;OAEG;IACI,mBAAmB,IAAI;QAC1B,iBAAiB,EAAE,MAAM,CAAC;QAC1B,uBAAuB,EAAE,MAAM,CAAC;QAChC,SAAS,EAAE,MAAM,CAAC;QAClB,wBAAwB,EAAE,MAAM,CAAC;KACpC;IASD;;OAEG;IACI,UAAU,IAAI,IAAI;IAMzB;;;;;;;;OAQG;IACI,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO;IAQvE;;;OAGG;IACI,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAK1D;;;;;;;;OAQG;IACI,6BAA6B,CAChC,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,eAAe,GAAE,MAAU,GAC5B,mBAAmB,EAAE,GAAG,IAAI;IAsC/B;;;;;;OAMG;IACI,wBAAwB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,GAAG;QAC9D,QAAQ,EAAE,mBAAmB,EAAE,CAAC;QAChC,SAAS,EAAE,mBAAmB,EAAE,CAAC;QACjC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;KACnC;CA6BJ"}
1
+ {"version":3,"file":"ContextCompressionEngine.d.ts","sourceRoot":"","sources":["../../src/mxp/ContextCompressionEngine.ts"],"names":[],"mappings":"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"}