@pcircle/memesh 2.6.6 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (430) hide show
  1. package/README.md +116 -54
  2. package/README.zh-TW.md +198 -33
  3. package/dist/a2a/client/A2AClient.d.ts +7 -1
  4. package/dist/a2a/client/A2AClient.d.ts.map +1 -1
  5. package/dist/a2a/client/A2AClient.js +197 -61
  6. package/dist/a2a/client/A2AClient.js.map +1 -1
  7. package/dist/a2a/constants.d.ts +34 -0
  8. package/dist/a2a/constants.d.ts.map +1 -0
  9. package/dist/a2a/constants.js +34 -0
  10. package/dist/a2a/constants.js.map +1 -0
  11. package/dist/a2a/delegator/MCPTaskDelegator.d.ts +19 -0
  12. package/dist/a2a/delegator/MCPTaskDelegator.d.ts.map +1 -0
  13. package/dist/a2a/delegator/MCPTaskDelegator.js +184 -0
  14. package/dist/a2a/delegator/MCPTaskDelegator.js.map +1 -0
  15. package/dist/a2a/delegator/index.d.ts +3 -0
  16. package/dist/a2a/delegator/index.d.ts.map +1 -0
  17. package/dist/a2a/delegator/index.js +2 -0
  18. package/dist/a2a/delegator/index.js.map +1 -0
  19. package/dist/a2a/delegator/types.d.ts +9 -0
  20. package/dist/a2a/delegator/types.d.ts.map +1 -0
  21. package/dist/a2a/delegator/types.js +2 -0
  22. package/dist/a2a/delegator/types.js.map +1 -0
  23. package/dist/a2a/errors/ErrorCodes.d.ts +26 -0
  24. package/dist/a2a/errors/ErrorCodes.d.ts.map +1 -0
  25. package/dist/a2a/errors/ErrorCodes.js +25 -0
  26. package/dist/a2a/errors/ErrorCodes.js.map +1 -0
  27. package/dist/a2a/errors/ErrorMessages.d.ts +28 -0
  28. package/dist/a2a/errors/ErrorMessages.d.ts.map +1 -0
  29. package/dist/a2a/errors/ErrorMessages.js +51 -0
  30. package/dist/a2a/errors/ErrorMessages.js.map +1 -0
  31. package/dist/a2a/errors/index.d.ts +3 -0
  32. package/dist/a2a/errors/index.d.ts.map +1 -0
  33. package/dist/a2a/errors/index.js +3 -0
  34. package/dist/a2a/errors/index.js.map +1 -0
  35. package/dist/a2a/executor/TaskExecutor.d.ts +6 -4
  36. package/dist/a2a/executor/TaskExecutor.d.ts.map +1 -1
  37. package/dist/a2a/executor/TaskExecutor.js +8 -47
  38. package/dist/a2a/executor/TaskExecutor.js.map +1 -1
  39. package/dist/a2a/jobs/TimeoutChecker.d.ts +49 -0
  40. package/dist/a2a/jobs/TimeoutChecker.d.ts.map +1 -0
  41. package/dist/a2a/jobs/TimeoutChecker.js +176 -0
  42. package/dist/a2a/jobs/TimeoutChecker.js.map +1 -0
  43. package/dist/a2a/metrics/A2AMetrics.d.ts +38 -0
  44. package/dist/a2a/metrics/A2AMetrics.d.ts.map +1 -0
  45. package/dist/a2a/metrics/A2AMetrics.js +142 -0
  46. package/dist/a2a/metrics/A2AMetrics.js.map +1 -0
  47. package/dist/a2a/metrics/index.d.ts +3 -0
  48. package/dist/a2a/metrics/index.d.ts.map +1 -0
  49. package/dist/a2a/metrics/index.js +2 -0
  50. package/dist/a2a/metrics/index.js.map +1 -0
  51. package/dist/a2a/server/A2AServer.d.ts +2 -0
  52. package/dist/a2a/server/A2AServer.d.ts.map +1 -1
  53. package/dist/a2a/server/A2AServer.js +48 -8
  54. package/dist/a2a/server/A2AServer.js.map +1 -1
  55. package/dist/a2a/server/middleware/auth.d.ts +6 -0
  56. package/dist/a2a/server/middleware/auth.d.ts.map +1 -0
  57. package/dist/a2a/server/middleware/auth.js +64 -0
  58. package/dist/a2a/server/middleware/auth.js.map +1 -0
  59. package/dist/a2a/server/middleware/csrf.d.ts +7 -0
  60. package/dist/a2a/server/middleware/csrf.d.ts.map +1 -0
  61. package/dist/a2a/server/middleware/csrf.js +169 -0
  62. package/dist/a2a/server/middleware/csrf.js.map +1 -0
  63. package/dist/a2a/server/middleware/rateLimit.d.ts +9 -0
  64. package/dist/a2a/server/middleware/rateLimit.d.ts.map +1 -0
  65. package/dist/a2a/server/middleware/rateLimit.js +192 -0
  66. package/dist/a2a/server/middleware/rateLimit.js.map +1 -0
  67. package/dist/a2a/server/middleware/resourceProtection.d.ts +17 -0
  68. package/dist/a2a/server/middleware/resourceProtection.d.ts.map +1 -0
  69. package/dist/a2a/server/middleware/resourceProtection.js +258 -0
  70. package/dist/a2a/server/middleware/resourceProtection.js.map +1 -0
  71. package/dist/a2a/server/middleware/timeout.d.ts +4 -0
  72. package/dist/a2a/server/middleware/timeout.d.ts.map +1 -0
  73. package/dist/a2a/server/middleware/timeout.js +56 -0
  74. package/dist/a2a/server/middleware/timeout.js.map +1 -0
  75. package/dist/a2a/server/middleware.d.ts.map +1 -1
  76. package/dist/a2a/server/middleware.js +9 -6
  77. package/dist/a2a/server/middleware.js.map +1 -1
  78. package/dist/a2a/server/routes.d.ts +3 -0
  79. package/dist/a2a/server/routes.d.ts.map +1 -1
  80. package/dist/a2a/server/routes.js +24 -7
  81. package/dist/a2a/server/routes.js.map +1 -1
  82. package/dist/a2a/server/validation/index.d.ts +2 -0
  83. package/dist/a2a/server/validation/index.d.ts.map +1 -0
  84. package/dist/a2a/server/validation/index.js +2 -0
  85. package/dist/a2a/server/validation/index.js.map +1 -0
  86. package/dist/a2a/server/validation/sendMessageSchema.d.ts +112 -0
  87. package/dist/a2a/server/validation/sendMessageSchema.d.ts.map +1 -0
  88. package/dist/a2a/server/validation/sendMessageSchema.js +143 -0
  89. package/dist/a2a/server/validation/sendMessageSchema.js.map +1 -0
  90. package/dist/a2a/storage/AgentRegistry.d.ts +7 -0
  91. package/dist/a2a/storage/AgentRegistry.d.ts.map +1 -1
  92. package/dist/a2a/storage/AgentRegistry.js +95 -38
  93. package/dist/a2a/storage/AgentRegistry.js.map +1 -1
  94. package/dist/a2a/storage/TaskQueue.d.ts +3 -0
  95. package/dist/a2a/storage/TaskQueue.d.ts.map +1 -1
  96. package/dist/a2a/storage/TaskQueue.js +80 -18
  97. package/dist/a2a/storage/TaskQueue.js.map +1 -1
  98. package/dist/a2a/storage/inputValidation.d.ts +18 -0
  99. package/dist/a2a/storage/inputValidation.d.ts.map +1 -0
  100. package/dist/a2a/storage/inputValidation.js +101 -0
  101. package/dist/a2a/storage/inputValidation.js.map +1 -0
  102. package/dist/a2a/storage/schemas.sql +11 -1
  103. package/dist/a2a/types/index.d.ts +1 -0
  104. package/dist/a2a/types/index.d.ts.map +1 -1
  105. package/dist/a2a/types/rateLimit.d.ts +26 -0
  106. package/dist/a2a/types/rateLimit.d.ts.map +1 -0
  107. package/dist/a2a/types/rateLimit.js +2 -0
  108. package/dist/a2a/types/rateLimit.js.map +1 -0
  109. package/dist/a2a/types/task.d.ts +1 -1
  110. package/dist/a2a/types/task.d.ts.map +1 -1
  111. package/dist/agents/E2EHealingAgent.js +1 -1
  112. package/dist/agents/E2EHealingAgent.js.map +1 -1
  113. package/dist/agents/knowledge/storage/KnowledgeGraphStore.d.ts.map +1 -1
  114. package/dist/agents/knowledge/storage/KnowledgeGraphStore.js +5 -3
  115. package/dist/agents/knowledge/storage/KnowledgeGraphStore.js.map +1 -1
  116. package/dist/cli/config.d.ts +36 -0
  117. package/dist/cli/config.d.ts.map +1 -0
  118. package/dist/cli/config.js +398 -0
  119. package/dist/cli/config.js.map +1 -0
  120. package/dist/cli/daemon.d.ts +3 -0
  121. package/dist/cli/daemon.d.ts.map +1 -0
  122. package/dist/cli/daemon.js +413 -0
  123. package/dist/cli/daemon.js.map +1 -0
  124. package/dist/cli/dashboard.d.ts +2 -0
  125. package/dist/cli/dashboard.d.ts.map +1 -0
  126. package/dist/cli/dashboard.js +300 -0
  127. package/dist/cli/dashboard.js.map +1 -0
  128. package/dist/cli/index.d.ts +3 -0
  129. package/dist/cli/index.d.ts.map +1 -0
  130. package/dist/cli/index.js +182 -0
  131. package/dist/cli/index.js.map +1 -0
  132. package/dist/cli/setup-wizard.d.ts +18 -0
  133. package/dist/cli/setup-wizard.d.ts.map +1 -0
  134. package/dist/cli/setup-wizard.js +308 -0
  135. package/dist/cli/setup-wizard.js.map +1 -0
  136. package/dist/cli/stats.d.ts +34 -0
  137. package/dist/cli/stats.d.ts.map +1 -0
  138. package/dist/cli/stats.js +479 -0
  139. package/dist/cli/stats.js.map +1 -0
  140. package/dist/cli/tutorial.d.ts +27 -0
  141. package/dist/cli/tutorial.d.ts.map +1 -0
  142. package/dist/cli/tutorial.js +430 -0
  143. package/dist/cli/tutorial.js.map +1 -0
  144. package/dist/config/index.d.ts.map +1 -1
  145. package/dist/config/index.js +8 -7
  146. package/dist/config/index.js.map +1 -1
  147. package/dist/config/simple-config.js.map +1 -1
  148. package/dist/core/BackgroundExecutor.d.ts +6 -0
  149. package/dist/core/BackgroundExecutor.d.ts.map +1 -1
  150. package/dist/core/BackgroundExecutor.js +152 -44
  151. package/dist/core/BackgroundExecutor.js.map +1 -1
  152. package/dist/core/ClaudeMdRuleExtractor.d.ts.map +1 -1
  153. package/dist/core/ClaudeMdRuleExtractor.js +9 -14
  154. package/dist/core/ClaudeMdRuleExtractor.js.map +1 -1
  155. package/dist/core/MistakePatternManager.d.ts.map +1 -1
  156. package/dist/core/MistakePatternManager.js +29 -3
  157. package/dist/core/MistakePatternManager.js.map +1 -1
  158. package/dist/core/ResourceMonitor.d.ts.map +1 -1
  159. package/dist/core/ResourceMonitor.js +64 -2
  160. package/dist/core/ResourceMonitor.js.map +1 -1
  161. package/dist/core/ResultHandler.d.ts.map +1 -1
  162. package/dist/core/ResultHandler.js +12 -0
  163. package/dist/core/ResultHandler.js.map +1 -1
  164. package/dist/core/SessionContextMonitor.d.ts.map +1 -1
  165. package/dist/core/SessionContextMonitor.js +4 -1
  166. package/dist/core/SessionContextMonitor.js.map +1 -1
  167. package/dist/core/SessionTokenTracker.d.ts.map +1 -1
  168. package/dist/core/SessionTokenTracker.js +58 -2
  169. package/dist/core/SessionTokenTracker.js.map +1 -1
  170. package/dist/db/ConnectionPool.d.ts.map +1 -1
  171. package/dist/db/ConnectionPool.js +111 -37
  172. package/dist/db/ConnectionPool.js.map +1 -1
  173. package/dist/db/QueryCache.d.ts.map +1 -1
  174. package/dist/db/QueryCache.js +8 -5
  175. package/dist/db/QueryCache.js.map +1 -1
  176. package/dist/errors/ErrorClassifier.d.ts +60 -0
  177. package/dist/errors/ErrorClassifier.d.ts.map +1 -0
  178. package/dist/errors/ErrorClassifier.js +443 -0
  179. package/dist/errors/ErrorClassifier.js.map +1 -0
  180. package/dist/errors/index.d.ts +1 -0
  181. package/dist/errors/index.d.ts.map +1 -1
  182. package/dist/errors/index.js +3 -0
  183. package/dist/errors/index.js.map +1 -1
  184. package/dist/evolution/ABTestManager.d.ts.map +1 -1
  185. package/dist/evolution/ABTestManager.js +80 -1
  186. package/dist/evolution/ABTestManager.js.map +1 -1
  187. package/dist/evolution/EvolutionBootstrap.d.ts.map +1 -1
  188. package/dist/evolution/EvolutionBootstrap.js +4 -4
  189. package/dist/evolution/EvolutionBootstrap.js.map +1 -1
  190. package/dist/evolution/FeedbackCollector.d.ts.map +1 -1
  191. package/dist/evolution/FeedbackCollector.js +6 -0
  192. package/dist/evolution/FeedbackCollector.js.map +1 -1
  193. package/dist/evolution/LearningManager.d.ts.map +1 -1
  194. package/dist/evolution/LearningManager.js +16 -0
  195. package/dist/evolution/LearningManager.js.map +1 -1
  196. package/dist/evolution/MultiObjectiveOptimizer.d.ts.map +1 -1
  197. package/dist/evolution/MultiObjectiveOptimizer.js +18 -3
  198. package/dist/evolution/MultiObjectiveOptimizer.js.map +1 -1
  199. package/dist/evolution/PerformanceTracker.d.ts.map +1 -1
  200. package/dist/evolution/PerformanceTracker.js +83 -13
  201. package/dist/evolution/PerformanceTracker.js.map +1 -1
  202. package/dist/evolution/StatisticalAnalyzer.d.ts +1 -0
  203. package/dist/evolution/StatisticalAnalyzer.d.ts.map +1 -1
  204. package/dist/evolution/StatisticalAnalyzer.js +126 -9
  205. package/dist/evolution/StatisticalAnalyzer.js.map +1 -1
  206. package/dist/evolution/instrumentation/withEvolutionTracking.d.ts.map +1 -1
  207. package/dist/evolution/instrumentation/withEvolutionTracking.js +0 -2
  208. package/dist/evolution/instrumentation/withEvolutionTracking.js.map +1 -1
  209. package/dist/evolution/storage/SQLiteStore.d.ts +1 -0
  210. package/dist/evolution/storage/SQLiteStore.d.ts.map +1 -1
  211. package/dist/evolution/storage/SQLiteStore.js +59 -12
  212. package/dist/evolution/storage/SQLiteStore.js.map +1 -1
  213. package/dist/evolution/storage/validation.d.ts +2 -3
  214. package/dist/evolution/storage/validation.d.ts.map +1 -1
  215. package/dist/evolution/storage/validation.js +2 -6
  216. package/dist/evolution/storage/validation.js.map +1 -1
  217. package/dist/hooks/a2a-collaboration.d.ts +30 -0
  218. package/dist/hooks/a2a-collaboration.d.ts.map +1 -0
  219. package/dist/hooks/a2a-collaboration.js +400 -0
  220. package/dist/hooks/a2a-collaboration.js.map +1 -0
  221. package/dist/knowledge-graph/index.d.ts +7 -1
  222. package/dist/knowledge-graph/index.d.ts.map +1 -1
  223. package/dist/knowledge-graph/index.js +335 -52
  224. package/dist/knowledge-graph/index.js.map +1 -1
  225. package/dist/knowledge-graph/types.d.ts +1 -0
  226. package/dist/knowledge-graph/types.d.ts.map +1 -1
  227. package/dist/management/UninstallManager.d.ts.map +1 -1
  228. package/dist/management/UninstallManager.js.map +1 -1
  229. package/dist/mcp/BuddyCommands.d.ts +15 -2
  230. package/dist/mcp/BuddyCommands.d.ts.map +1 -1
  231. package/dist/mcp/BuddyCommands.js +635 -52
  232. package/dist/mcp/BuddyCommands.js.map +1 -1
  233. package/dist/mcp/ServerInitializer.d.ts +7 -1
  234. package/dist/mcp/ServerInitializer.d.ts.map +1 -1
  235. package/dist/mcp/ServerInitializer.js +121 -69
  236. package/dist/mcp/ServerInitializer.js.map +1 -1
  237. package/dist/mcp/ToolDefinitions.d.ts.map +1 -1
  238. package/dist/mcp/ToolDefinitions.js +109 -18
  239. package/dist/mcp/ToolDefinitions.js.map +1 -1
  240. package/dist/mcp/ToolRouter.d.ts +6 -0
  241. package/dist/mcp/ToolRouter.d.ts.map +1 -1
  242. package/dist/mcp/ToolRouter.js +90 -2
  243. package/dist/mcp/ToolRouter.js.map +1 -1
  244. package/dist/mcp/daemon/DaemonBootstrap.d.ts +33 -0
  245. package/dist/mcp/daemon/DaemonBootstrap.d.ts.map +1 -0
  246. package/dist/mcp/daemon/DaemonBootstrap.js +155 -0
  247. package/dist/mcp/daemon/DaemonBootstrap.js.map +1 -0
  248. package/dist/mcp/daemon/DaemonLockManager.d.ts +47 -0
  249. package/dist/mcp/daemon/DaemonLockManager.d.ts.map +1 -0
  250. package/dist/mcp/daemon/DaemonLockManager.js +417 -0
  251. package/dist/mcp/daemon/DaemonLockManager.js.map +1 -0
  252. package/dist/mcp/daemon/DaemonProtocol.d.ts +127 -0
  253. package/dist/mcp/daemon/DaemonProtocol.d.ts.map +1 -0
  254. package/dist/mcp/daemon/DaemonProtocol.js +452 -0
  255. package/dist/mcp/daemon/DaemonProtocol.js.map +1 -0
  256. package/dist/mcp/daemon/DaemonSocketServer.d.ts +71 -0
  257. package/dist/mcp/daemon/DaemonSocketServer.d.ts.map +1 -0
  258. package/dist/mcp/daemon/DaemonSocketServer.js +384 -0
  259. package/dist/mcp/daemon/DaemonSocketServer.js.map +1 -0
  260. package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts +67 -0
  261. package/dist/mcp/daemon/GracefulShutdownCoordinator.d.ts.map +1 -0
  262. package/dist/mcp/daemon/GracefulShutdownCoordinator.js +206 -0
  263. package/dist/mcp/daemon/GracefulShutdownCoordinator.js.map +1 -0
  264. package/dist/mcp/daemon/IpcTransport.d.ts +42 -0
  265. package/dist/mcp/daemon/IpcTransport.d.ts.map +1 -0
  266. package/dist/mcp/daemon/IpcTransport.js +231 -0
  267. package/dist/mcp/daemon/IpcTransport.js.map +1 -0
  268. package/dist/mcp/daemon/StdioProxyClient.d.ts +84 -0
  269. package/dist/mcp/daemon/StdioProxyClient.d.ts.map +1 -0
  270. package/dist/mcp/daemon/StdioProxyClient.js +560 -0
  271. package/dist/mcp/daemon/StdioProxyClient.js.map +1 -0
  272. package/dist/mcp/daemon/VersionManager.d.ts +35 -0
  273. package/dist/mcp/daemon/VersionManager.d.ts.map +1 -0
  274. package/dist/mcp/daemon/VersionManager.js +169 -0
  275. package/dist/mcp/daemon/VersionManager.js.map +1 -0
  276. package/dist/mcp/daemon/index.d.ts +9 -0
  277. package/dist/mcp/daemon/index.d.ts.map +1 -0
  278. package/dist/mcp/daemon/index.js +9 -0
  279. package/dist/mcp/daemon/index.js.map +1 -0
  280. package/dist/mcp/handlers/A2AToolHandlers.d.ts.map +1 -1
  281. package/dist/mcp/handlers/A2AToolHandlers.js +24 -4
  282. package/dist/mcp/handlers/A2AToolHandlers.js.map +1 -1
  283. package/dist/mcp/handlers/ToolHandlers.d.ts.map +1 -1
  284. package/dist/mcp/handlers/ToolHandlers.js.map +1 -1
  285. package/dist/mcp/resources/best-practices.md +1 -1
  286. package/dist/mcp/resources/buddy-do-skill.md +1 -1
  287. package/dist/mcp/resources/examples.md +1 -1
  288. package/dist/mcp/resources/quick-reference.md +1 -1
  289. package/dist/mcp/resources/usage-guide.md +2 -2
  290. package/dist/mcp/schemas/OutputSchemas.d.ts +16 -0
  291. package/dist/mcp/schemas/OutputSchemas.d.ts.map +1 -1
  292. package/dist/mcp/schemas/OutputSchemas.js +12 -0
  293. package/dist/mcp/schemas/OutputSchemas.js.map +1 -1
  294. package/dist/mcp/server-bootstrap.js +245 -29
  295. package/dist/mcp/server-bootstrap.js.map +1 -1
  296. package/dist/mcp/server.d.ts +11 -1
  297. package/dist/mcp/server.d.ts.map +1 -1
  298. package/dist/mcp/server.js +196 -9
  299. package/dist/mcp/server.js.map +1 -1
  300. package/dist/mcp/tools/a2a-list-tasks.d.ts +13 -0
  301. package/dist/mcp/tools/a2a-list-tasks.d.ts.map +1 -0
  302. package/dist/mcp/tools/a2a-list-tasks.js +24 -0
  303. package/dist/mcp/tools/a2a-list-tasks.js.map +1 -0
  304. package/dist/mcp/tools/a2a-report-result.d.ts +35 -0
  305. package/dist/mcp/tools/a2a-report-result.d.ts.map +1 -0
  306. package/dist/mcp/tools/a2a-report-result.js +73 -0
  307. package/dist/mcp/tools/a2a-report-result.js.map +1 -0
  308. package/dist/mcp/tools/buddy-do.d.ts.map +1 -1
  309. package/dist/mcp/tools/buddy-do.js +10 -2
  310. package/dist/mcp/tools/buddy-do.js.map +1 -1
  311. package/dist/mcp/tools/buddy-help.d.ts.map +1 -1
  312. package/dist/mcp/tools/buddy-help.js +6 -14
  313. package/dist/mcp/tools/buddy-help.js.map +1 -1
  314. package/dist/mcp/validation.d.ts +1 -1
  315. package/dist/memory/AutoMemoryRecorder.d.ts +35 -0
  316. package/dist/memory/AutoMemoryRecorder.d.ts.map +1 -0
  317. package/dist/memory/AutoMemoryRecorder.js +164 -0
  318. package/dist/memory/AutoMemoryRecorder.js.map +1 -0
  319. package/dist/memory/AutoTagger.d.ts +9 -0
  320. package/dist/memory/AutoTagger.d.ts.map +1 -0
  321. package/dist/memory/AutoTagger.js +149 -0
  322. package/dist/memory/AutoTagger.js.map +1 -0
  323. package/dist/memory/MistakePatternEngine.d.ts.map +1 -1
  324. package/dist/memory/MistakePatternEngine.js.map +1 -1
  325. package/dist/memory/ProjectMemoryCleanup.js +1 -1
  326. package/dist/memory/SecretManager.d.ts.map +1 -1
  327. package/dist/memory/SecretManager.js +48 -15
  328. package/dist/memory/SecretManager.js.map +1 -1
  329. package/dist/memory/SmartMemoryQuery.d.ts +9 -0
  330. package/dist/memory/SmartMemoryQuery.d.ts.map +1 -0
  331. package/dist/memory/SmartMemoryQuery.js +65 -0
  332. package/dist/memory/SmartMemoryQuery.js.map +1 -0
  333. package/dist/memory/UnifiedMemoryStore.d.ts +1 -0
  334. package/dist/memory/UnifiedMemoryStore.d.ts.map +1 -1
  335. package/dist/memory/UnifiedMemoryStore.js +211 -38
  336. package/dist/memory/UnifiedMemoryStore.js.map +1 -1
  337. package/dist/memory/UserPreferenceEngine.d.ts.map +1 -1
  338. package/dist/memory/UserPreferenceEngine.js +6 -5
  339. package/dist/memory/UserPreferenceEngine.js.map +1 -1
  340. package/dist/memory/types/unified-memory.d.ts +2 -0
  341. package/dist/memory/types/unified-memory.d.ts.map +1 -1
  342. package/dist/memory/types/unified-memory.js +2 -0
  343. package/dist/memory/types/unified-memory.js.map +1 -1
  344. package/dist/orchestrator/AgentRouter.d.ts.map +1 -1
  345. package/dist/orchestrator/AgentRouter.js +5 -4
  346. package/dist/orchestrator/AgentRouter.js.map +1 -1
  347. package/dist/orchestrator/CostTracker.d.ts.map +1 -1
  348. package/dist/orchestrator/CostTracker.js.map +1 -1
  349. package/dist/orchestrator/GlobalResourcePool.d.ts.map +1 -1
  350. package/dist/orchestrator/GlobalResourcePool.js +70 -3
  351. package/dist/orchestrator/GlobalResourcePool.js.map +1 -1
  352. package/dist/ui/AsciiProgressBar.d.ts.map +1 -1
  353. package/dist/ui/AsciiProgressBar.js +0 -1
  354. package/dist/ui/AsciiProgressBar.js.map +1 -1
  355. package/dist/ui/AttributionManager.js +2 -2
  356. package/dist/ui/AttributionManager.js.map +1 -1
  357. package/dist/ui/Dashboard.d.ts.map +1 -1
  358. package/dist/ui/Dashboard.js +2 -2
  359. package/dist/ui/Dashboard.js.map +1 -1
  360. package/dist/ui/MetricsStore.d.ts.map +1 -1
  361. package/dist/ui/MetricsStore.js +2 -2
  362. package/dist/ui/MetricsStore.js.map +1 -1
  363. package/dist/ui/ProgressIndicator.d.ts +35 -0
  364. package/dist/ui/ProgressIndicator.d.ts.map +1 -0
  365. package/dist/ui/ProgressIndicator.js +177 -0
  366. package/dist/ui/ProgressIndicator.js.map +1 -0
  367. package/dist/ui/ResponseFormatter.d.ts +8 -0
  368. package/dist/ui/ResponseFormatter.d.ts.map +1 -1
  369. package/dist/ui/ResponseFormatter.js +220 -35
  370. package/dist/ui/ResponseFormatter.js.map +1 -1
  371. package/dist/ui/design-tokens.d.ts +37 -0
  372. package/dist/ui/design-tokens.d.ts.map +1 -0
  373. package/dist/ui/design-tokens.js +105 -0
  374. package/dist/ui/design-tokens.js.map +1 -0
  375. package/dist/ui/theme.d.ts +14 -4
  376. package/dist/ui/theme.d.ts.map +1 -1
  377. package/dist/ui/theme.js +7 -2
  378. package/dist/ui/theme.js.map +1 -1
  379. package/dist/utils/PathResolver.d.ts.map +1 -1
  380. package/dist/utils/PathResolver.js +3 -2
  381. package/dist/utils/PathResolver.js.map +1 -1
  382. package/dist/utils/SystemResources.d.ts.map +1 -1
  383. package/dist/utils/SystemResources.js +9 -14
  384. package/dist/utils/SystemResources.js.map +1 -1
  385. package/dist/utils/errorHandler.d.ts +6 -0
  386. package/dist/utils/errorHandler.d.ts.map +1 -1
  387. package/dist/utils/errorHandler.js +50 -1
  388. package/dist/utils/errorHandler.js.map +1 -1
  389. package/dist/utils/index.d.ts +19 -0
  390. package/dist/utils/index.d.ts.map +1 -0
  391. package/dist/utils/index.js +17 -0
  392. package/dist/utils/index.js.map +1 -0
  393. package/dist/utils/json.d.ts.map +1 -1
  394. package/dist/utils/json.js +11 -1
  395. package/dist/utils/json.js.map +1 -1
  396. package/dist/utils/logger.d.ts.map +1 -1
  397. package/dist/utils/logger.js +65 -3
  398. package/dist/utils/logger.js.map +1 -1
  399. package/dist/utils/lru-cache.d.ts +7 -0
  400. package/dist/utils/lru-cache.d.ts.map +1 -1
  401. package/dist/utils/lru-cache.js +37 -7
  402. package/dist/utils/lru-cache.js.map +1 -1
  403. package/dist/utils/safeMath.d.ts +11 -0
  404. package/dist/utils/safeMath.d.ts.map +1 -0
  405. package/dist/utils/safeMath.js +92 -0
  406. package/dist/utils/safeMath.js.map +1 -0
  407. package/dist/utils/toonify-adapter.d.ts.map +1 -1
  408. package/dist/utils/toonify-adapter.js.map +1 -1
  409. package/dist/utils/tracing/TraceContext.d.ts +23 -0
  410. package/dist/utils/tracing/TraceContext.d.ts.map +1 -0
  411. package/dist/utils/tracing/TraceContext.js +127 -0
  412. package/dist/utils/tracing/TraceContext.js.map +1 -0
  413. package/dist/utils/tracing/index.d.ts +3 -0
  414. package/dist/utils/tracing/index.d.ts.map +1 -0
  415. package/dist/utils/tracing/index.js +3 -0
  416. package/dist/utils/tracing/index.js.map +1 -0
  417. package/dist/utils/tracing/middleware.d.ts +15 -0
  418. package/dist/utils/tracing/middleware.d.ts.map +1 -0
  419. package/dist/utils/tracing/middleware.js +49 -0
  420. package/dist/utils/tracing/middleware.js.map +1 -0
  421. package/dist/utils/validation.d.ts +12 -0
  422. package/dist/utils/validation.d.ts.map +1 -0
  423. package/dist/utils/validation.js +87 -0
  424. package/dist/utils/validation.js.map +1 -0
  425. package/mcp.json +10 -0
  426. package/package.json +10 -2
  427. package/plugin.json +2 -12
  428. package/scripts/postinstall.js +192 -21
  429. package/README.md.backup +0 -536
  430. package/README.zh-TW.md.backup +0 -446
@@ -0,0 +1,142 @@
1
+ import { logger } from '../../utils/logger.js';
2
+ export class A2AMetrics {
3
+ static instance = null;
4
+ metrics;
5
+ enabled;
6
+ constructor() {
7
+ this.metrics = new Map();
8
+ this.enabled = process.env.A2A_METRICS_ENABLED !== 'false';
9
+ if (this.enabled) {
10
+ logger.info('[A2A Metrics] Metrics collection enabled');
11
+ }
12
+ }
13
+ static getInstance() {
14
+ if (!A2AMetrics.instance) {
15
+ A2AMetrics.instance = new A2AMetrics();
16
+ }
17
+ return A2AMetrics.instance;
18
+ }
19
+ static resetInstance() {
20
+ A2AMetrics.instance = null;
21
+ }
22
+ incrementCounter(name, labels = {}, value = 1) {
23
+ if (!this.enabled)
24
+ return;
25
+ if (!Number.isFinite(value)) {
26
+ logger.error('[A2A Metrics] Counter increment value must be finite', {
27
+ name,
28
+ value,
29
+ labels
30
+ });
31
+ return;
32
+ }
33
+ if (value < 0) {
34
+ logger.error('[A2A Metrics] Counter increment value must be non-negative', {
35
+ name,
36
+ value,
37
+ labels
38
+ });
39
+ return;
40
+ }
41
+ const key = this.getKey(name, labels);
42
+ const existing = this.metrics.get(key);
43
+ if (existing) {
44
+ existing.value += value;
45
+ existing.timestamp = Date.now();
46
+ }
47
+ else {
48
+ this.metrics.set(key, {
49
+ type: 'counter',
50
+ value,
51
+ labels,
52
+ timestamp: Date.now(),
53
+ });
54
+ }
55
+ logger.debug(`[A2A Metrics] Counter ${name} = ${this.metrics.get(key)?.value}`, labels);
56
+ }
57
+ setGauge(name, value, labels = {}) {
58
+ if (!this.enabled)
59
+ return;
60
+ if (!Number.isFinite(value)) {
61
+ logger.error('[A2A Metrics] Gauge value must be finite', {
62
+ name,
63
+ value,
64
+ labels
65
+ });
66
+ return;
67
+ }
68
+ const key = this.getKey(name, labels);
69
+ this.metrics.set(key, {
70
+ type: 'gauge',
71
+ value,
72
+ labels,
73
+ timestamp: Date.now(),
74
+ });
75
+ logger.debug(`[A2A Metrics] Gauge ${name} = ${value}`, labels);
76
+ }
77
+ recordHistogram(name, value, labels = {}) {
78
+ if (!this.enabled)
79
+ return;
80
+ if (!Number.isFinite(value)) {
81
+ logger.error('[A2A Metrics] Histogram value must be finite', {
82
+ name,
83
+ value,
84
+ labels
85
+ });
86
+ return;
87
+ }
88
+ if (value < 0) {
89
+ logger.error('[A2A Metrics] Histogram value must be non-negative', {
90
+ name,
91
+ value,
92
+ labels
93
+ });
94
+ return;
95
+ }
96
+ const key = this.getKey(name, labels);
97
+ this.metrics.set(key, {
98
+ type: 'histogram',
99
+ value,
100
+ labels,
101
+ timestamp: Date.now(),
102
+ });
103
+ logger.debug(`[A2A Metrics] Histogram ${name} = ${value}`, labels);
104
+ }
105
+ getValue(name, labels = {}) {
106
+ const key = this.getKey(name, labels);
107
+ return this.metrics.get(key)?.value;
108
+ }
109
+ getSnapshot() {
110
+ return new Map(this.metrics);
111
+ }
112
+ clear() {
113
+ this.metrics.clear();
114
+ logger.debug('[A2A Metrics] All metrics cleared');
115
+ }
116
+ setEnabled(enabled) {
117
+ this.enabled = enabled;
118
+ logger.info(`[A2A Metrics] Metrics collection ${enabled ? 'enabled' : 'disabled'}`);
119
+ }
120
+ getKey(name, labels) {
121
+ const labelStr = Object.entries(labels)
122
+ .sort(([a], [b]) => a.localeCompare(b))
123
+ .map(([k, v]) => `${k}=${v}`)
124
+ .join(',');
125
+ return labelStr ? `${name}{${labelStr}}` : name;
126
+ }
127
+ }
128
+ export const METRIC_NAMES = {
129
+ TASKS_SUBMITTED: 'a2a.tasks.submitted',
130
+ TASKS_COMPLETED: 'a2a.tasks.completed',
131
+ TASKS_FAILED: 'a2a.tasks.failed',
132
+ TASKS_TIMEOUT: 'a2a.tasks.timeout',
133
+ TASKS_CANCELED: 'a2a.tasks.canceled',
134
+ TASK_DURATION_MS: 'a2a.task.duration_ms',
135
+ QUEUE_SIZE: 'a2a.queue.size',
136
+ QUEUE_DEPTH: 'a2a.queue.depth',
137
+ HEARTBEAT_SUCCESS: 'a2a.heartbeat.success',
138
+ HEARTBEAT_FAILURE: 'a2a.heartbeat.failure',
139
+ AGENTS_ACTIVE: 'a2a.agents.active',
140
+ AGENTS_STALE: 'a2a.agents.stale',
141
+ };
142
+ //# sourceMappingURL=A2AMetrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"A2AMetrics.js","sourceRoot":"","sources":["../../../src/a2a/metrics/A2AMetrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { A2AMetrics, METRIC_NAMES } from './A2AMetrics.js';
2
+ export type { MetricType, MetricValue } from './A2AMetrics.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/a2a/metrics/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC3D,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { A2AMetrics, METRIC_NAMES } from './A2AMetrics.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/a2a/metrics/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC"}
@@ -19,6 +19,8 @@ export declare class A2AServer {
19
19
  private routes;
20
20
  private heartbeatTimer;
21
21
  private port;
22
+ private delegator;
23
+ private timeoutChecker;
22
24
  constructor(config: A2AServerConfig);
23
25
  private createApp;
24
26
  start(): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"A2AServer.d.ts","sourceRoot":"","sources":["../../../src/a2a/server/A2AServer.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AASnD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,qBAAa,SAAS;IASR,OAAO,CAAC,MAAM;IAR1B,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,IAAI,CAAa;gBAEL,MAAM,EAAE,eAAe;IAO3C,OAAO,CAAC,SAAS;IAmBX,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IA2BxB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmB3B,OAAO,IAAI,MAAM;IAIjB,YAAY,IAAI,SAAS;YAIX,iBAAiB;YAgBjB,eAAe;IAsB7B,OAAO,CAAC,cAAc;CAQvB"}
1
+ {"version":3,"file":"A2AServer.d.ts","sourceRoot":"","sources":["../../../src/a2a/server/A2AServer.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAMpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkCnD,MAAM,WAAW,eAAe;IAE9B,OAAO,EAAE,MAAM,CAAC;IAEhB,SAAS,EAAE,SAAS,CAAC;IAErB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,SAAS,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAEzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAkCD,qBAAa,SAAS;IAgBR,OAAO,CAAC,MAAM;IAf1B,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,cAAc,CAAiB;gBAOnB,MAAM,EAAE,eAAe;IAY3C,OAAO,CAAC,SAAS;IAqFX,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;IAsExB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA0C3B,OAAO,IAAI,MAAM;IASjB,YAAY,IAAI,SAAS;YAUX,iBAAiB;YAgBjB,eAAe;IA2B7B,OAAO,CAAC,cAAc;CAQvB"}
@@ -2,9 +2,18 @@ import express from 'express';
2
2
  import { createServer } from 'net';
3
3
  import { logger } from '../../utils/logger.js';
4
4
  import { TaskQueue } from '../storage/TaskQueue.js';
5
- import { AgentRegistry } from '../storage/AgentRegistry.js';
5
+ import { AgentRegistry, startAgentRegistryCleanup, stopAgentRegistryCleanup, } from '../storage/AgentRegistry.js';
6
6
  import { A2ARoutes } from './routes.js';
7
7
  import { errorHandler, requestLogger, corsMiddleware, jsonErrorHandler, } from './middleware.js';
8
+ import { authenticateToken } from './middleware/auth.js';
9
+ import { rateLimitMiddleware, startCleanup, stopCleanup, } from './middleware/rateLimit.js';
10
+ import { requestTimeoutMiddleware } from './middleware/timeout.js';
11
+ import { resourceProtectionMiddleware, startResourceProtectionCleanup, stopResourceProtectionCleanup, } from './middleware/resourceProtection.js';
12
+ import { csrfTokenMiddleware, csrfProtection, startCsrfCleanup, stopCsrfCleanup, } from './middleware/csrf.js';
13
+ import { MCPTaskDelegator } from '../delegator/MCPTaskDelegator.js';
14
+ import { TimeoutChecker } from '../jobs/TimeoutChecker.js';
15
+ import { TIME, NETWORK } from '../constants.js';
16
+ import { tracingMiddleware, spanMiddleware } from '../../utils/tracing/index.js';
8
17
  export class A2AServer {
9
18
  config;
10
19
  app;
@@ -14,23 +23,32 @@ export class A2AServer {
14
23
  routes;
15
24
  heartbeatTimer = null;
16
25
  port = 0;
26
+ delegator;
27
+ timeoutChecker;
17
28
  constructor(config) {
18
29
  this.config = config;
19
30
  this.taskQueue = new TaskQueue(config.agentId);
20
31
  this.registry = AgentRegistry.getInstance();
21
32
  this.routes = new A2ARoutes(config.agentId, this.taskQueue, config.agentCard);
22
33
  this.app = this.createApp();
34
+ this.delegator = new MCPTaskDelegator(this.taskQueue, logger);
35
+ this.timeoutChecker = new TimeoutChecker(this.delegator);
36
+ this.routes.setDelegator(this.delegator);
23
37
  }
24
38
  createApp() {
25
39
  const app = express();
40
+ app.use(resourceProtectionMiddleware());
26
41
  app.use(express.json({ limit: '10mb' }));
27
42
  app.use(corsMiddleware);
43
+ app.use(tracingMiddleware());
44
+ app.use(requestTimeoutMiddleware());
28
45
  app.use(requestLogger);
29
- app.post('/a2a/send-message', this.routes.sendMessage);
30
- app.get('/a2a/tasks/:taskId', this.routes.getTask);
31
- app.get('/a2a/tasks', this.routes.listTasks);
32
- app.get('/a2a/agent-card', this.routes.getAgentCard);
33
- app.post('/a2a/tasks/:taskId/cancel', this.routes.cancelTask);
46
+ app.use(csrfTokenMiddleware);
47
+ app.post('/a2a/send-message', authenticateToken, csrfProtection, rateLimitMiddleware, spanMiddleware('a2a.send-message'), this.routes.sendMessage);
48
+ app.get('/a2a/tasks/:taskId', authenticateToken, rateLimitMiddleware, spanMiddleware('a2a.get-task'), this.routes.getTask);
49
+ app.get('/a2a/tasks', authenticateToken, rateLimitMiddleware, spanMiddleware('a2a.list-tasks'), this.routes.listTasks);
50
+ app.post('/a2a/tasks/:taskId/cancel', authenticateToken, csrfProtection, rateLimitMiddleware, spanMiddleware('a2a.cancel-task'), this.routes.cancelTask);
51
+ app.get('/a2a/agent-card', spanMiddleware('a2a.agent-card'), this.routes.getAgentCard);
34
52
  app.use(jsonErrorHandler);
35
53
  app.use(errorHandler);
36
54
  return app;
@@ -49,14 +67,33 @@ export class A2AServer {
49
67
  capabilities: this.config.agentCard.capabilities,
50
68
  });
51
69
  this.startHeartbeat();
70
+ this.timeoutChecker.start();
71
+ startCleanup();
72
+ startResourceProtectionCleanup();
73
+ startCsrfCleanup();
74
+ startAgentRegistryCleanup();
52
75
  resolve(port);
53
76
  });
54
77
  this.server.on('error', (err) => {
78
+ try {
79
+ this.taskQueue.close();
80
+ }
81
+ catch (closeErr) {
82
+ logger.error('[A2A Server] Failed to close TaskQueue during startup error cleanup', {
83
+ originalError: err.message,
84
+ closeError: closeErr instanceof Error ? closeErr.message : String(closeErr),
85
+ });
86
+ }
55
87
  reject(err);
56
88
  });
57
89
  });
58
90
  }
59
91
  async stop() {
92
+ this.timeoutChecker.stop();
93
+ stopCleanup();
94
+ stopResourceProtectionCleanup();
95
+ stopCsrfCleanup();
96
+ stopAgentRegistryCleanup();
60
97
  if (this.heartbeatTimer) {
61
98
  clearInterval(this.heartbeatTimer);
62
99
  this.heartbeatTimer = null;
@@ -71,6 +108,9 @@ export class A2AServer {
71
108
  });
72
109
  });
73
110
  }
111
+ else {
112
+ this.taskQueue.close();
113
+ }
74
114
  }
75
115
  getPort() {
76
116
  return this.port;
@@ -82,7 +122,7 @@ export class A2AServer {
82
122
  if (this.config.port) {
83
123
  return this.config.port;
84
124
  }
85
- const range = this.config.portRange || { min: 3000, max: 3999 };
125
+ const range = this.config.portRange || NETWORK.DEFAULT_PORT_RANGE;
86
126
  for (let port = range.min; port <= range.max; port++) {
87
127
  if (await this.isPortAvailable(port)) {
88
128
  return port;
@@ -110,7 +150,7 @@ export class A2AServer {
110
150
  });
111
151
  }
112
152
  startHeartbeat() {
113
- const interval = this.config.heartbeatInterval || 60000;
153
+ const interval = this.config.heartbeatInterval || TIME.HEARTBEAT_INTERVAL_MS;
114
154
  this.heartbeatTimer = setInterval(() => {
115
155
  this.registry.heartbeat(this.config.agentId);
116
156
  logger.debug('[A2A Server] Heartbeat sent', { agentId: this.config.agentId });
@@ -1 +1 @@
1
- {"version":3,"file":"A2AServer.js","sourceRoot":"","sources":["../../../src/a2a/server/A2AServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"A2AServer.js","sourceRoot":"","sources":["../../../src/a2a/server/A2AServer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Request, Response, NextFunction } from 'express';
2
+ export interface AuthenticatedRequest extends Request {
3
+ agentId?: string;
4
+ }
5
+ export declare function authenticateToken(req: Request, res: Response, next: NextFunction): void;
6
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/auth.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAO/D,MAAM,WAAW,oBAAqB,SAAQ,OAAO;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAqCD,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CA6DN"}
@@ -0,0 +1,64 @@
1
+ import { timingSafeEqual, createHash } from 'crypto';
2
+ import { logger } from '../../../utils/logger.js';
3
+ function constantTimeCompare(a, b) {
4
+ if (a.length !== b.length) {
5
+ const dummy = 'x'.repeat(b.length);
6
+ const bufferA = Buffer.from(a.length >= b.length ? a : dummy, 'utf8');
7
+ const bufferB = Buffer.from(b, 'utf8');
8
+ if (bufferA.length !== bufferB.length) {
9
+ return false;
10
+ }
11
+ timingSafeEqual(bufferA, bufferB);
12
+ return false;
13
+ }
14
+ try {
15
+ const bufferA = Buffer.from(a, 'utf8');
16
+ const bufferB = Buffer.from(b, 'utf8');
17
+ return timingSafeEqual(bufferA, bufferB);
18
+ }
19
+ catch (error) {
20
+ logger.error('Error in constant-time comparison', { error });
21
+ return false;
22
+ }
23
+ }
24
+ export function authenticateToken(req, res, next) {
25
+ const authHeader = req.headers['authorization'];
26
+ const token = authHeader && authHeader.split(' ')[1];
27
+ const validToken = process.env.MEMESH_A2A_TOKEN;
28
+ if (!validToken) {
29
+ logger.error('MEMESH_A2A_TOKEN not configured');
30
+ res.status(500).json({
31
+ error: 'Server configuration error',
32
+ code: 'TOKEN_NOT_CONFIGURED'
33
+ });
34
+ return;
35
+ }
36
+ if (!token) {
37
+ res.status(401).json({
38
+ error: 'Authentication token required',
39
+ code: 'AUTH_MISSING'
40
+ });
41
+ return;
42
+ }
43
+ if (!constantTimeCompare(token, validToken)) {
44
+ res.status(401).json({
45
+ error: 'Invalid authentication token',
46
+ code: 'AUTH_INVALID'
47
+ });
48
+ return;
49
+ }
50
+ const authReq = req;
51
+ const body = req.body;
52
+ if (body?.agentCard?.id) {
53
+ authReq.agentId = body.agentCard.id;
54
+ }
55
+ else {
56
+ const tokenHash = createHash('sha256')
57
+ .update(token)
58
+ .digest('hex')
59
+ .substring(0, 16);
60
+ authReq.agentId = `token-${tokenHash}`;
61
+ }
62
+ next();
63
+ }
64
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Request, Response, NextFunction } from 'express';
2
+ export declare function startCsrfCleanup(): void;
3
+ export declare function stopCsrfCleanup(): void;
4
+ export declare function clearCsrfTokens(): void;
5
+ export declare function csrfTokenMiddleware(req: Request, res: Response, next: NextFunction): void;
6
+ export declare function csrfProtection(req: Request, res: Response, next: NextFunction): void;
7
+ //# sourceMappingURL=csrf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csrf.d.ts","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/csrf.ts"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAuL/D,wBAAgB,gBAAgB,IAAI,IAAI,CAWvC;AAKD,wBAAgB,eAAe,IAAI,IAAI,CAMtC;AAKD,wBAAgB,eAAe,IAAI,IAAI,CAEtC;AAaD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAoBN;AAoBD,wBAAgB,cAAc,CAC5B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAwGN"}
@@ -0,0 +1,169 @@
1
+ import { randomBytes } from 'crypto';
2
+ import { logger } from '../../../utils/logger.js';
3
+ import { LRUCache } from '../../../utils/lru-cache.js';
4
+ const CONFIG_BOUNDS = {
5
+ maxTokens: { min: 100, max: 1_000_000, default: 10_000 },
6
+ tokenExpirationMs: { min: 60_000, max: 86_400_000, default: 3_600_000 },
7
+ evictionWarningCooldownMs: { min: 1_000, max: 3_600_000, default: 60_000 },
8
+ };
9
+ function getConfigValue(envVar, defaultValue, min, max) {
10
+ const envValue = process.env[envVar];
11
+ if (!envValue) {
12
+ return defaultValue;
13
+ }
14
+ const parsed = parseInt(envValue, 10);
15
+ if (isNaN(parsed)) {
16
+ logger.warn(`[CSRF] Invalid ${envVar}="${envValue}" (not a number), using default ${defaultValue}`);
17
+ return defaultValue;
18
+ }
19
+ if (parsed < min || parsed > max) {
20
+ logger.warn(`[CSRF] Invalid ${envVar}=${parsed} (out of bounds [${min}, ${max}]), using default ${defaultValue}`);
21
+ return defaultValue;
22
+ }
23
+ return parsed;
24
+ }
25
+ const MAX_TOKENS = getConfigValue('CSRF_MAX_TOKENS', CONFIG_BOUNDS.maxTokens.default, CONFIG_BOUNDS.maxTokens.min, CONFIG_BOUNDS.maxTokens.max);
26
+ const TOKEN_EXPIRATION_MS = getConfigValue('CSRF_TOKEN_EXPIRATION_MS', CONFIG_BOUNDS.tokenExpirationMs.default, CONFIG_BOUNDS.tokenExpirationMs.min, CONFIG_BOUNDS.tokenExpirationMs.max);
27
+ const tokens = new LRUCache({
28
+ maxSize: MAX_TOKENS,
29
+ ttl: TOKEN_EXPIRATION_MS,
30
+ });
31
+ let lastEvictionWarningTime = 0;
32
+ const EVICTION_WARNING_COOLDOWN_MS = getConfigValue('CSRF_EVICTION_WARNING_COOLDOWN_MS', CONFIG_BOUNDS.evictionWarningCooldownMs.default, CONFIG_BOUNDS.evictionWarningCooldownMs.min, CONFIG_BOUNDS.evictionWarningCooldownMs.max);
33
+ logger.info('[CSRF] Configuration loaded', {
34
+ maxTokens: MAX_TOKENS,
35
+ tokenExpirationMs: TOKEN_EXPIRATION_MS,
36
+ evictionWarningCooldownMs: EVICTION_WARNING_COOLDOWN_MS,
37
+ });
38
+ const SAFE_METHODS = ['GET', 'HEAD', 'OPTIONS'];
39
+ function generateToken() {
40
+ return randomBytes(32).toString('hex');
41
+ }
42
+ function storeToken(token, expiration) {
43
+ const atCapacity = tokens.size() >= MAX_TOKENS;
44
+ tokens.set(token, expiration);
45
+ if (atCapacity) {
46
+ const now = Date.now();
47
+ if (now - lastEvictionWarningTime > EVICTION_WARNING_COOLDOWN_MS) {
48
+ lastEvictionWarningTime = now;
49
+ logger.warn('[CSRF] Token cache at capacity, LRU eviction triggered', {
50
+ maxTokens: MAX_TOKENS,
51
+ currentSize: tokens.size(),
52
+ });
53
+ }
54
+ }
55
+ }
56
+ function cleanupExpiredTokens() {
57
+ const cleaned = tokens.cleanupExpired();
58
+ if (cleaned > 0) {
59
+ logger.debug('[CSRF] Cleaned up expired tokens', { count: cleaned });
60
+ }
61
+ }
62
+ let cleanupInterval = null;
63
+ export function startCsrfCleanup() {
64
+ if (cleanupInterval) {
65
+ return;
66
+ }
67
+ cleanupInterval = setInterval(() => {
68
+ cleanupExpiredTokens();
69
+ }, 10 * 60 * 1000);
70
+ logger.info('[CSRF] Token cleanup started');
71
+ }
72
+ export function stopCsrfCleanup() {
73
+ if (cleanupInterval) {
74
+ clearInterval(cleanupInterval);
75
+ cleanupInterval = null;
76
+ logger.info('[CSRF] Token cleanup stopped');
77
+ }
78
+ }
79
+ export function clearCsrfTokens() {
80
+ tokens.clear();
81
+ }
82
+ export function csrfTokenMiddleware(req, res, next) {
83
+ const token = generateToken();
84
+ const expiration = Date.now() + TOKEN_EXPIRATION_MS;
85
+ storeToken(token, expiration);
86
+ res.cookie('XSRF-TOKEN', token, {
87
+ httpOnly: false,
88
+ secure: process.env.NODE_ENV === 'production',
89
+ sameSite: 'strict',
90
+ maxAge: TOKEN_EXPIRATION_MS,
91
+ });
92
+ res.setHeader('X-CSRF-Token', token);
93
+ next();
94
+ }
95
+ export function csrfProtection(req, res, next) {
96
+ if (SAFE_METHODS.includes(req.method)) {
97
+ return next();
98
+ }
99
+ const authHeader = req.header('Authorization');
100
+ if (authHeader?.startsWith('Bearer ')) {
101
+ logger.debug('[CSRF] Skipping CSRF check for Bearer token authentication', {
102
+ method: req.method,
103
+ path: req.path,
104
+ });
105
+ return next();
106
+ }
107
+ const token = req.header('X-CSRF-Token') ||
108
+ (req.body && req.body.csrf_token);
109
+ if (!token) {
110
+ logger.warn('[CSRF] Missing CSRF token', {
111
+ method: req.method,
112
+ path: req.path,
113
+ ip: req.ip,
114
+ });
115
+ res.status(403).json({
116
+ success: false,
117
+ error: {
118
+ code: 'CSRF_TOKEN_MISSING',
119
+ message: 'CSRF token required for this request',
120
+ },
121
+ });
122
+ return;
123
+ }
124
+ const entry = tokens.peek(token);
125
+ if (!entry) {
126
+ logger.warn('[CSRF] Invalid CSRF token', {
127
+ method: req.method,
128
+ path: req.path,
129
+ ip: req.ip,
130
+ });
131
+ res.status(403).json({
132
+ success: false,
133
+ error: {
134
+ code: 'CSRF_TOKEN_INVALID',
135
+ message: 'Invalid CSRF token',
136
+ },
137
+ });
138
+ return;
139
+ }
140
+ if (entry.value < Date.now()) {
141
+ logger.warn('[CSRF] Expired CSRF token', {
142
+ method: req.method,
143
+ path: req.path,
144
+ ip: req.ip,
145
+ });
146
+ tokens.delete(token);
147
+ res.status(403).json({
148
+ success: false,
149
+ error: {
150
+ code: 'CSRF_TOKEN_EXPIRED',
151
+ message: 'CSRF token expired, please refresh',
152
+ },
153
+ });
154
+ return;
155
+ }
156
+ tokens.delete(token);
157
+ const newToken = generateToken();
158
+ const newExpiration = Date.now() + TOKEN_EXPIRATION_MS;
159
+ storeToken(newToken, newExpiration);
160
+ res.setHeader('X-CSRF-Token', newToken);
161
+ res.cookie('XSRF-TOKEN', newToken, {
162
+ httpOnly: false,
163
+ secure: process.env.NODE_ENV === 'production',
164
+ sameSite: 'strict',
165
+ maxAge: TOKEN_EXPIRATION_MS,
166
+ });
167
+ next();
168
+ }
169
+ //# sourceMappingURL=csrf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csrf.js","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/csrf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Response, NextFunction } from 'express';
2
+ import type { RateLimitStats } from '../../types/rateLimit.js';
3
+ import type { AuthenticatedRequest } from './auth.js';
4
+ export declare function startCleanup(): void;
5
+ export declare function stopCleanup(): void;
6
+ export declare function getRateLimitStats(): RateLimitStats[];
7
+ export declare function clearRateLimitData(): void;
8
+ export declare function rateLimitMiddleware(req: AuthenticatedRequest, res: Response, next: NextFunction): void;
9
+ //# sourceMappingURL=rateLimit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimit.d.ts","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/rateLimit.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAoPtD,wBAAgB,YAAY,IAAI,IAAI,CASnC;AAKD,wBAAgB,WAAW,IAAI,IAAI,CAMlC;AAKD,wBAAgB,iBAAiB,IAAI,cAAc,EAAE,CAEpD;AAKD,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC;AAiBD,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,oBAAoB,EACzB,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CA0CN"}