@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
@@ -1 +1 @@
1
- {"version":3,"file":"RewardSignalProcessor.js","sourceRoot":"","sources":["../../src/services/RewardSignalProcessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RewardSignalProcessor.js","sourceRoot":"","sources":["../../src/services/RewardSignalProcessor.ts"],"names":[],"mappings":"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"}
@@ -36,8 +36,17 @@ export declare class SharedStateService {
36
36
  private static instance;
37
37
  private stateStore;
38
38
  private channelStates;
39
+ /** How long an untouched state entry is kept before cleanup (24 hours). */
40
+ private static readonly STATE_TTL_MS;
41
+ /** How often the cleanup sweep runs (1 hour). */
42
+ private static readonly CLEANUP_INTERVAL_MS;
43
+ private cleanupInterval;
39
44
  private constructor();
40
45
  static getInstance(): SharedStateService;
46
+ /**
47
+ * Stop the cleanup timer. For tests and shutdown.
48
+ */
49
+ stopCleanup(): void;
41
50
  /**
42
51
  * Store collaborative state that can be referenced by ID
43
52
  * Only used when agents have mxpEnabled=true
@@ -62,9 +71,14 @@ export declare class SharedStateService {
62
71
  */
63
72
  getChannelStates(channelId: string): SharedStateEntry[];
64
73
  /**
65
- * Clean up old states to prevent memory leaks
74
+ * Drop states that have not been touched within the TTL.
75
+ *
76
+ * Runs on a timer from the constructor; also callable directly.
77
+ *
78
+ * @param maxAgeMs Age past which a state is dropped (default: 24 hours)
79
+ * @returns The number of states removed
66
80
  */
67
- cleanupOldStates(maxAgeMs?: number): void;
81
+ cleanupOldStates(maxAgeMs?: number): number;
68
82
  /**
69
83
  * Get statistics for monitoring
70
84
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SharedStateService.d.ts","sourceRoot":"","sources":["../../src/services/SharedStateService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAeH,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,aAAa,CAAkC;IAEvD,OAAO;WAGO,WAAW,IAAI,kBAAkB;IAO/C;;;OAGG;IACI,UAAU,CACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACrB,IAAI;IA4BP;;OAEG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIzD;;;OAGG;IACI,oBAAoB,CACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC5C,UAAU,CAAC,EAAE,GAAG,CAAC;KACf,GACP,GAAG;IA6CN;;OAEG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAS9D;;OAEG;IACI,gBAAgB,CAAC,QAAQ,GAAE,MAA4B,GAAG,IAAI;IAqBrE;;OAEG;IACI,QAAQ,IAAI;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B;CA0BJ;AAGD,eAAO,MAAM,kBAAkB,oBAAmC,CAAC"}
1
+ {"version":3,"file":"SharedStateService.d.ts","sourceRoot":"","sources":["../../src/services/SharedStateService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAeH,MAAM,WAAW,gBAAgB;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,GAAG,CAAC;IACV,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,aAAa,CAAkC;IAEvD,2EAA2E;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAuB;IAE3D,iDAAiD;IACjD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAkB;IAE7D,OAAO,CAAC,eAAe,CAA+B;IAEtD,OAAO;WAcO,WAAW,IAAI,kBAAkB;IAO/C;;OAEG;IACI,WAAW,IAAI,IAAI;IAO1B;;;OAGG;IACI,UAAU,CACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,MAAM,GACrB,IAAI;IA4BP;;OAEG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIzD;;;OAGG;IACI,oBAAoB,CACvB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QACL,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC5C,UAAU,CAAC,EAAE,GAAG,CAAC;KACf,GACP,GAAG;IA6CN;;OAEG;IACI,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAS9D;;;;;;;OAOG;IACI,gBAAgB,CAAC,QAAQ,GAAE,MAAwC,GAAG,MAAM;IAmCnF;;OAEG;IACI,QAAQ,IAAI;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC9B;CA0BJ;AAGD,eAAO,MAAM,kBAAkB,oBAAmC,CAAC"}
@@ -35,7 +35,22 @@ export class SharedStateService {
35
35
  static instance;
36
36
  stateStore = new Map();
37
37
  channelStates = new Map(); // channelId -> Set of stateIds
38
+ /** How long an untouched state entry is kept before cleanup (24 hours). */
39
+ static STATE_TTL_MS = 24 * 60 * 60 * 1000;
40
+ /** How often the cleanup sweep runs (1 hour). */
41
+ static CLEANUP_INTERVAL_MS = 60 * 60 * 1000;
42
+ cleanupInterval = null;
38
43
  constructor() {
44
+ // This is a process-lifetime singleton holding an unbounded Map, so the
45
+ // sweep has to be driven by something. cleanupOldStates() existed but had
46
+ // no callers anywhere, so stateStore/channelStates simply grew forever.
47
+ this.cleanupInterval = setInterval(() => {
48
+ this.cleanupOldStates();
49
+ }, SharedStateService.CLEANUP_INTERVAL_MS);
50
+ // Background sweep — must not keep the event loop alive on its own.
51
+ this.cleanupInterval.unref();
52
+ // Do not hold the event loop open on account of a garbage-collection timer.
53
+ this.cleanupInterval.unref?.();
39
54
  }
40
55
  static getInstance() {
41
56
  if (!SharedStateService.instance) {
@@ -43,6 +58,15 @@ export class SharedStateService {
43
58
  }
44
59
  return SharedStateService.instance;
45
60
  }
61
+ /**
62
+ * Stop the cleanup timer. For tests and shutdown.
63
+ */
64
+ stopCleanup() {
65
+ if (this.cleanupInterval) {
66
+ clearInterval(this.cleanupInterval);
67
+ this.cleanupInterval = null;
68
+ }
69
+ }
46
70
  /**
47
71
  * Store collaborative state that can be referenced by ID
48
72
  * Only used when agents have mxpEnabled=true
@@ -127,9 +151,14 @@ export class SharedStateService {
127
151
  .filter(state => state !== undefined);
128
152
  }
129
153
  /**
130
- * Clean up old states to prevent memory leaks
154
+ * Drop states that have not been touched within the TTL.
155
+ *
156
+ * Runs on a timer from the constructor; also callable directly.
157
+ *
158
+ * @param maxAgeMs Age past which a state is dropped (default: 24 hours)
159
+ * @returns The number of states removed
131
160
  */
132
- cleanupOldStates(maxAgeMs = 24 * 60 * 60 * 1000) {
161
+ cleanupOldStates(maxAgeMs = SharedStateService.STATE_TTL_MS) {
133
162
  const now = Date.now();
134
163
  const toDelete = [];
135
164
  for (const [stateId, state] of this.stateStore.entries()) {
@@ -142,9 +171,21 @@ export class SharedStateService {
142
171
  const state = this.stateStore.get(stateId);
143
172
  if (state) {
144
173
  this.stateStore.delete(stateId);
145
- this.channelStates.get(state.channelId)?.delete(stateId);
174
+ const channelStateIds = this.channelStates.get(state.channelId);
175
+ if (channelStateIds) {
176
+ channelStateIds.delete(stateId);
177
+ // Drop the channel entry too, or channelStates grows forever
178
+ // with empty Sets for channels that are long gone.
179
+ if (channelStateIds.size === 0) {
180
+ this.channelStates.delete(state.channelId);
181
+ }
182
+ }
146
183
  }
147
184
  }
185
+ if (toDelete.length > 0) {
186
+ logger.debug(`Removed ${toDelete.length} shared state entries older than ${maxAgeMs}ms`);
187
+ }
188
+ return toDelete.length;
148
189
  }
149
190
  /**
150
191
  * Get statistics for monitoring
@@ -1 +1 @@
1
- {"version":3,"file":"SharedStateService.js","sourceRoot":"","sources":["../../src/services/SharedStateService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SharedStateService.js","sourceRoot":"","sources":["../../src/services/SharedStateService.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,6 @@ export declare class TaskEffectivenessService {
30
30
  private readonly activeTasks;
31
31
  private readonly taskDefinitions;
32
32
  private readonly taskEvents;
33
- private readonly completedTasks;
34
33
  private config;
35
34
  private constructor();
36
35
  static getInstance(): TaskEffectivenessService;
@@ -51,25 +50,42 @@ export declare class TaskEffectivenessService {
51
50
  */
52
51
  completeTask(taskId: string, success: boolean, customMetrics?: Record<string, number>): Promise<TaskEffectivenessMetrics | null>;
53
52
  /**
54
- * Get comparison with baseline
55
- */
56
- compareWithBaseline(taskId: string): EffectivenessComparison | null;
57
- /**
58
- * Get analytics for a time period
59
- */
60
- getAnalytics(startTime: number, endTime: number, channelId?: ChannelId): EffectivenessAnalytics;
61
- /**
62
- * Persist task effectiveness data to MongoDB
53
+ * Compare a task against its baseline.
54
+ *
55
+ * Reads a running task from memory and a finished one from MongoDB, so this
56
+ * keeps working across a restart.
57
+ *
58
+ * @returns null when the task or its definition is unknown
59
+ */
60
+ compareWithBaseline(taskId: string): Promise<EffectivenessComparison | null>;
61
+ /**
62
+ * Effectiveness analytics for a time period, computed from persisted tasks.
63
+ *
64
+ * Reads from MongoDB, so results cover every task ever completed — not just
65
+ * the ones this process happened to run.
66
+ *
67
+ * @param startTime Start of the window (epoch ms)
68
+ * @param endTime End of the window (epoch ms)
69
+ * @param channelId Optional channel filter
70
+ * @param taskType Optional task-type filter
71
+ * @throws If the query fails. Effectiveness numbers computed from an empty
72
+ * result set would look like real "no activity" data.
73
+ */
74
+ getAnalytics(startTime: number, endTime: number, channelId?: ChannelId, taskType?: string): Promise<EffectivenessAnalytics>;
75
+ /**
76
+ * Query persisted task effectiveness records.
77
+ *
78
+ * @throws If the query fails
79
+ */
80
+ private findCompletedTasks;
81
+ /**
82
+ * Persist task effectiveness data to MongoDB.
83
+ *
84
+ * @throws If the task has no definition, or the write fails. A completed task
85
+ * that is not written down is history that is simply gone; the caller
86
+ * needs to know.
63
87
  */
64
88
  private persistTaskToDB;
65
- /**
66
- * Load task effectiveness data from MongoDB
67
- */
68
- private loadTaskFromDB;
69
- /**
70
- * Enhanced analytics with MongoDB queries
71
- */
72
- getEnhancedAnalytics(startTime: number, endTime: number, channelId?: ChannelId, taskType?: string): Promise<EffectivenessAnalytics>;
73
89
  /**
74
90
  * Compute analytics from metrics array
75
91
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TaskEffectivenessService.d.ts","sourceRoot":"","sources":["../../src/services/TaskEffectivenessService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAaH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EACH,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAErB,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,qBAAa,wBAAwB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA0B;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAGlD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+C;IAC3E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IAGtE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+C;IAG9E,OAAO,CAAC,MAAM,CAWZ;IAEF,OAAO;WAMO,WAAW,IAAI,wBAAwB;IAOrD;;OAEG;IACI,SAAS,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM;IA6EpD;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAqCnD;;OAEG;IACI,aAAa,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE,OAAO,GAClB,IAAI;IAoBP;;OAEG;IACU,YAAY,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IA6C3C;;OAEG;IACI,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,GAAG,IAAI;IAqD1E;;OAEG;IACI,YAAY,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,GACtB,sBAAsB;IA2EzB;;OAEG;YACW,eAAe;IA2B7B;;OAEG;YACW,cAAc;IAkB5B;;OAEG;IACU,oBAAoB,CAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC;IA4BlC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAuEnC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmC9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAenC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACU,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IA0BrF;;OAEG;IACU,sBAAsB,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,SAAS,GACtB,OAAO,CAAC,GAAG,CAAC;IA0Cf;;OAEG;IACU,qBAAqB,CAC9B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,GACtB,OAAO,CAAC,GAAG,CAAC;CA8DlB"}
1
+ {"version":3,"file":"TaskEffectivenessService.d.ts","sourceRoot":"","sources":["../../src/services/TaskEffectivenessService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAaH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAGvD,OAAO,EACH,wBAAwB,EACxB,cAAc,EACd,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAErB,MAAM,gCAAgC,CAAC;AAExC;;GAEG;AACH,qBAAa,wBAAwB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA0B;IAC7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAGlD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA+C;IAC3E,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IACrE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IAQtE,OAAO,CAAC,MAAM,CAWZ;IAEF,OAAO;WAMO,WAAW,IAAI,wBAAwB;IAOrD;;OAEG;IACI,SAAS,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM;IA6EpD;;OAEG;IACI,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,IAAI;IAqCnD;;OAEG;IACI,aAAa,CAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,EACrD,OAAO,CAAC,EAAE,OAAO,GAClB,IAAI;IAsBP;;OAEG;IACU,YAAY,CACrB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACvC,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IA2C3C;;;;;;;OAOG;IACU,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IA6DzF;;;;;;;;;;;;OAYG;IACU,YAAY,CACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,EACrB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,sBAAsB,CAAC;IAMlC;;;;OAIG;YACW,kBAAkB;IAiChC;;;;;;OAMG;YACW,eAAe;IA2B7B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAuEnC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAmC9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAenC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAuB5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAqB/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAkB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA4C3B;;OAEG;IACU,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,wBAAwB,GAAG,IAAI,CAAC;IAiBrF;;OAEG;IACU,sBAAsB,CAC/B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,SAAS,GACtB,OAAO,CAAC,GAAG,CAAC;IA2Cf;;OAEG;IACU,qBAAqB,CAC9B,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,SAAS,GACtB,OAAO,CAAC,GAAG,CAAC;CAuDlB"}
@@ -40,8 +40,10 @@ export class TaskEffectivenessService {
40
40
  activeTasks = new Map();
41
41
  taskDefinitions = new Map();
42
42
  taskEvents = new Map();
43
- // Historical data (in production, this would be in MongoDB)
44
- completedTasks = new Map();
43
+ // Completed tasks live in MongoDB (TaskEffectivenessModel), not in memory.
44
+ // They were previously kept in a `completedTasks` Map, so all effectiveness
45
+ // history vanished on restart and any ranking built from it only ever saw
46
+ // the tasks this process happened to run.
45
47
  // Configuration
46
48
  config = {
47
49
  autoTrack: true,
@@ -172,7 +174,9 @@ export class TaskEffectivenessService {
172
174
  * Update task quality metrics
173
175
  */
174
176
  updateQuality(taskId, updates, agentId) {
175
- const metrics = this.activeTasks.get(taskId) || this.completedTasks.get(taskId);
177
+ // Quality is recorded while a task is running. A completed task's metrics
178
+ // are already persisted and are not amended here.
179
+ const metrics = this.activeTasks.get(taskId);
176
180
  if (metrics) {
177
181
  metrics.quality = { ...metrics.quality, ...updates };
178
182
  // Emit quality update event
@@ -205,11 +209,10 @@ export class TaskEffectivenessService {
205
209
  if (metrics.collaboration.participatingAgents.length > 1) {
206
210
  metrics.collaboration.collaborationScore = this.calculateCollaborationScore(metrics);
207
211
  }
208
- // Move to completed
209
- this.activeTasks.delete(taskId);
210
- this.completedTasks.set(taskId, metrics);
211
- // Persist to MongoDB
212
+ // Persist to MongoDB, then drop from the active set. Persist first: if
213
+ // it throws, the task stays active rather than disappearing entirely.
212
214
  await this.persistTaskToDB(taskId, metrics);
215
+ this.activeTasks.delete(taskId);
213
216
  // Emit completion event
214
217
  EventBus.server.emit(Events.Analytics.TASK_COMPLETED, createBaseEventPayload(Events.Analytics.TASK_COMPLETED, 'system', 'global', {
215
218
  taskId,
@@ -220,11 +223,23 @@ export class TaskEffectivenessService {
220
223
  return metrics;
221
224
  }
222
225
  /**
223
- * Get comparison with baseline
226
+ * Compare a task against its baseline.
227
+ *
228
+ * Reads a running task from memory and a finished one from MongoDB, so this
229
+ * keeps working across a restart.
230
+ *
231
+ * @returns null when the task or its definition is unknown
224
232
  */
225
- compareWithBaseline(taskId) {
226
- const metrics = this.completedTasks.get(taskId) || this.activeTasks.get(taskId);
227
- const definition = this.taskDefinitions.get(taskId);
233
+ async compareWithBaseline(taskId) {
234
+ let metrics = this.activeTasks.get(taskId);
235
+ let definition = this.taskDefinitions.get(taskId);
236
+ if (!metrics || !definition) {
237
+ const taskDoc = await TaskEffectivenessModel.findOne({ taskId }).exec();
238
+ if (taskDoc) {
239
+ metrics = metrics ?? taskDoc.metrics;
240
+ definition = definition ?? taskDoc.definition;
241
+ }
242
+ }
228
243
  if (!metrics || !definition) {
229
244
  return null;
230
245
  }
@@ -267,85 +282,64 @@ export class TaskEffectivenessService {
267
282
  return comparison;
268
283
  }
269
284
  /**
270
- * Get analytics for a time period
285
+ * Effectiveness analytics for a time period, computed from persisted tasks.
286
+ *
287
+ * Reads from MongoDB, so results cover every task ever completed — not just
288
+ * the ones this process happened to run.
289
+ *
290
+ * @param startTime Start of the window (epoch ms)
291
+ * @param endTime End of the window (epoch ms)
292
+ * @param channelId Optional channel filter
293
+ * @param taskType Optional task-type filter
294
+ * @throws If the query fails. Effectiveness numbers computed from an empty
295
+ * result set would look like real "no activity" data.
271
296
  */
272
- getAnalytics(startTime, endTime, channelId) {
273
- const relevantTasks = Array.from(this.completedTasks.values()).filter(task => {
274
- const inTimeRange = task.metadata.startTime >= startTime &&
275
- task.metadata.startTime <= endTime;
276
- const inChannel = !channelId ||
277
- this.taskDefinitions.get(task.taskId)?.channelId === channelId;
278
- return inTimeRange && inChannel;
279
- });
280
- // Initialize analytics
281
- const analytics = {
282
- period: { start: startTime, end: endTime },
283
- byTaskType: {},
284
- byChannel: {},
285
- trends: {
286
- effectivenessOverTime: [],
287
- improving: [],
288
- declining: []
289
- },
290
- patterns: {
291
- highPerformanceTasks: [],
292
- lowPerformanceTasks: [],
293
- effectiveTeams: []
294
- }
297
+ async getAnalytics(startTime, endTime, channelId, taskType) {
298
+ const tasks = await this.findCompletedTasks({ startTime, endTime, channelId, taskType });
299
+ return this.computeAnalyticsFromMetrics(tasks, startTime, endTime);
300
+ }
301
+ /**
302
+ * Query persisted task effectiveness records.
303
+ *
304
+ * @throws If the query fails
305
+ */
306
+ async findCompletedTasks(filter) {
307
+ const query = {
308
+ 'metrics.metadata.startTime': { $gte: filter.startTime, $lte: filter.endTime }
295
309
  };
296
- // Aggregate by task type
297
- for (const task of relevantTasks) {
298
- const type = task.metadata.type;
299
- if (!analytics.byTaskType[type]) {
300
- analytics.byTaskType[type] = {
301
- count: 0,
302
- avgCompletionTime: 0,
303
- successRate: 0,
304
- avgAutonomyScore: 0,
305
- commonTools: []
306
- };
307
- }
308
- const typeStats = analytics.byTaskType[type];
309
- typeStats.count++;
310
- typeStats.avgCompletionTime =
311
- (typeStats.avgCompletionTime * (typeStats.count - 1) +
312
- (task.performance.completionTime || 0)) / typeStats.count;
313
- typeStats.avgAutonomyScore =
314
- (typeStats.avgAutonomyScore * (typeStats.count - 1) +
315
- task.performance.autonomyScore) / typeStats.count;
316
- // Track tools
317
- for (const tool of task.performance.uniqueTools) {
318
- if (!typeStats.commonTools.includes(tool)) {
319
- typeStats.commonTools.push(tool);
320
- }
321
- }
310
+ if (filter.channelId) {
311
+ query.channelId = filter.channelId;
322
312
  }
323
- // Calculate success rates
324
- for (const [type, stats] of Object.entries(analytics.byTaskType)) {
325
- const typeTasks = relevantTasks.filter(t => t.metadata.type === type);
326
- const successful = typeTasks.filter(t => t.quality.goalAchieved).length;
327
- stats.successRate = typeTasks.length > 0 ? successful / typeTasks.length : 0;
313
+ if (filter.taskType) {
314
+ query['metrics.metadata.type'] = filter.taskType;
315
+ }
316
+ if (filter.agentId) {
317
+ query.agentIds = filter.agentId;
318
+ }
319
+ try {
320
+ const docs = await TaskEffectivenessModel.find(query).exec();
321
+ return docs.map(doc => doc.metrics);
322
+ }
323
+ catch (error) {
324
+ const message = error instanceof Error ? error.message : String(error);
325
+ this.logger.error(`Failed to query task effectiveness data: ${message}`);
326
+ throw new Error(`Failed to query task effectiveness data: ${message}`);
328
327
  }
329
- // Identify patterns
330
- analytics.patterns.highPerformanceTasks = Object.entries(analytics.byTaskType)
331
- .filter(([_, stats]) => stats.successRate > 0.8 && stats.avgAutonomyScore > 0.7)
332
- .map(([type]) => type);
333
- analytics.patterns.lowPerformanceTasks = Object.entries(analytics.byTaskType)
334
- .filter(([_, stats]) => stats.successRate < 0.5 || stats.avgAutonomyScore < 0.3)
335
- .map(([type]) => type);
336
- return analytics;
337
328
  }
338
329
  /**
339
- * Persist task effectiveness data to MongoDB
330
+ * Persist task effectiveness data to MongoDB.
331
+ *
332
+ * @throws If the task has no definition, or the write fails. A completed task
333
+ * that is not written down is history that is simply gone; the caller
334
+ * needs to know.
340
335
  */
341
336
  async persistTaskToDB(taskId, metrics) {
337
+ const definition = this.taskDefinitions.get(taskId);
338
+ if (!definition) {
339
+ throw new Error(`Cannot persist task ${taskId}: no task definition was registered for it`);
340
+ }
342
341
  try {
343
- const definition = this.taskDefinitions.get(taskId);
344
- if (!definition) {
345
- this.logger.warn(`No definition found for task ${taskId}, skipping DB persistence`);
346
- return;
347
- }
348
- const taskDoc = await TaskEffectivenessModel.findOneAndUpdate({ taskId }, {
342
+ await TaskEffectivenessModel.findOneAndUpdate({ taskId }, {
349
343
  $set: {
350
344
  channelId: definition.channelId,
351
345
  agentIds: metrics.collaboration.participatingAgents,
@@ -353,55 +347,12 @@ export class TaskEffectivenessService {
353
347
  metrics,
354
348
  updatedAt: new Date()
355
349
  }
356
- }, { upsert: true, new: true });
350
+ }, { upsert: true, new: true }).exec();
357
351
  }
358
352
  catch (error) {
359
- this.logger.error(`Failed to persist task effectiveness data: ${error}`);
360
- }
361
- }
362
- /**
363
- * Load task effectiveness data from MongoDB
364
- */
365
- async loadTaskFromDB(taskId) {
366
- try {
367
- const taskDoc = await TaskEffectivenessModel.findOne({ taskId });
368
- if (!taskDoc) {
369
- return null;
370
- }
371
- // Store in caches
372
- this.completedTasks.set(taskId, taskDoc.metrics);
373
- this.taskDefinitions.set(taskId, taskDoc.definition);
374
- return taskDoc.metrics;
375
- }
376
- catch (error) {
377
- this.logger.error(`Failed to load task effectiveness data: ${error}`);
378
- return null;
379
- }
380
- }
381
- /**
382
- * Enhanced analytics with MongoDB queries
383
- */
384
- async getEnhancedAnalytics(startTime, endTime, channelId, taskType) {
385
- try {
386
- const query = {
387
- 'metrics.metadata.startTime': { $gte: startTime, $lte: endTime }
388
- };
389
- if (channelId) {
390
- query.channelId = channelId;
391
- }
392
- if (taskType) {
393
- query['metrics.metadata.type'] = taskType;
394
- }
395
- const tasks = await TaskEffectivenessModel.find(query).exec();
396
- // Convert to in-memory format and use existing analytics logic
397
- const taskMetrics = tasks.map(task => task.metrics);
398
- // Use existing analytics logic but with MongoDB data
399
- return this.computeAnalyticsFromMetrics(taskMetrics, startTime, endTime);
400
- }
401
- catch (error) {
402
- this.logger.error(`Failed to get enhanced analytics: ${error}`);
403
- // Fallback to in-memory analytics
404
- return this.getAnalytics(startTime, endTime, channelId);
353
+ const message = error instanceof Error ? error.message : String(error);
354
+ this.logger.error(`Failed to persist task effectiveness data for ${taskId}: ${message}`);
355
+ throw new Error(`Failed to persist task effectiveness data for ${taskId}: ${message}`);
405
356
  }
406
357
  }
407
358
  /**
@@ -664,27 +615,20 @@ export class TaskEffectivenessService {
664
615
  * Get task metrics by ID
665
616
  */
666
617
  async getTaskMetrics(taskId) {
667
- // Check active tasks first
618
+ // A running task lives in memory; a finished one lives in MongoDB.
668
619
  const activeTask = this.activeTasks.get(taskId);
669
620
  if (activeTask) {
670
621
  return activeTask;
671
622
  }
672
- // Check completed tasks
673
- const completedTask = this.completedTasks.get(taskId);
674
- if (completedTask) {
675
- return completedTask;
676
- }
677
- // Try to load from MongoDB
678
623
  try {
679
- const taskDoc = await TaskEffectivenessModel.findOne({ taskId });
680
- if (taskDoc) {
681
- return taskDoc.metrics;
682
- }
624
+ const taskDoc = await TaskEffectivenessModel.findOne({ taskId }).exec();
625
+ return taskDoc ? taskDoc.metrics : null;
683
626
  }
684
627
  catch (error) {
685
- this.logger.error(`Error loading task from DB: ${error}`);
628
+ const message = error instanceof Error ? error.message : String(error);
629
+ this.logger.error(`Failed to load task ${taskId}: ${message}`);
630
+ throw new Error(`Failed to load task ${taskId}: ${message}`);
686
631
  }
687
- return null;
688
632
  }
689
633
  /**
690
634
  * Get effectiveness trends over time
@@ -692,15 +636,13 @@ export class TaskEffectivenessService {
692
636
  async getEffectivenessTrends(startTime, endTime, intervalMs, channelId) {
693
637
  const dataPoints = [];
694
638
  const intervals = Math.floor((endTime - startTime) / intervalMs);
639
+ // One query for the whole window, then bucket in memory.
640
+ const tasks = await this.findCompletedTasks({ startTime, endTime, channelId });
695
641
  for (let i = 0; i < intervals; i++) {
696
642
  const intervalStart = startTime + (i * intervalMs);
697
643
  const intervalEnd = intervalStart + intervalMs;
698
- const intervalTasks = Array.from(this.completedTasks.values()).filter(task => {
699
- const taskChannel = this.taskDefinitions.get(task.taskId)?.channelId;
700
- return task.metadata.startTime >= intervalStart &&
701
- task.metadata.startTime < intervalEnd &&
702
- (!channelId || taskChannel === channelId);
703
- });
644
+ const intervalTasks = tasks.filter(task => task.metadata.startTime >= intervalStart &&
645
+ task.metadata.startTime < intervalEnd);
704
646
  if (intervalTasks.length > 0) {
705
647
  const avgScore = intervalTasks.reduce((sum, task) => sum + this.calculateOverallScore(task), 0) / intervalTasks.length;
706
648
  const successRate = intervalTasks.filter(t => t.quality.goalAchieved).length /
@@ -725,14 +667,8 @@ export class TaskEffectivenessService {
725
667
  * Get agent-specific effectiveness
726
668
  */
727
669
  async getAgentEffectiveness(agentId, startTime, endTime, channelId) {
728
- const agentTasks = Array.from(this.completedTasks.values()).filter(task => {
729
- const taskChannel = this.taskDefinitions.get(task.taskId)?.channelId;
730
- const hasAgent = task.collaboration.participatingAgents.includes(agentId);
731
- return hasAgent &&
732
- task.metadata.startTime >= startTime &&
733
- task.metadata.startTime <= endTime &&
734
- (!channelId || taskChannel === channelId);
735
- });
670
+ // The agentIds index on the document does the channel/time/agent filtering.
671
+ const agentTasks = await this.findCompletedTasks({ startTime, endTime, channelId, agentId });
736
672
  const totalTasks = agentTasks.length;
737
673
  const successfulTasks = agentTasks.filter(t => t.quality.goalAchieved).length;
738
674
  const successRate = totalTasks > 0 ? successfulTasks / totalTasks : 0;