@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,192 @@
1
+ import { logger } from '../../../utils/logger.js';
2
+ import { RATE_LIMITS, ENV_KEYS } from '../../constants.js';
3
+ const buckets = new Map();
4
+ const stats = new Map();
5
+ let cleanupTimer = null;
6
+ const refillGuard = new Set();
7
+ function getRateLimitConfig(endpoint) {
8
+ const envMap = {
9
+ '/a2a/send-message': ENV_KEYS.RATE_LIMIT_SEND_MESSAGE,
10
+ '/a2a/tasks/:taskId': ENV_KEYS.RATE_LIMIT_GET_TASK,
11
+ '/a2a/tasks': ENV_KEYS.RATE_LIMIT_LIST_TASKS,
12
+ '/a2a/tasks/:taskId/cancel': ENV_KEYS.RATE_LIMIT_CANCEL_TASK,
13
+ };
14
+ const defaultMap = {
15
+ '/a2a/send-message': RATE_LIMITS.SEND_MESSAGE_RPM,
16
+ '/a2a/tasks/:taskId': RATE_LIMITS.GET_TASK_RPM,
17
+ '/a2a/tasks': RATE_LIMITS.LIST_TASKS_RPM,
18
+ '/a2a/tasks/:taskId/cancel': RATE_LIMITS.CANCEL_TASK_RPM,
19
+ };
20
+ const envKey = envMap[endpoint];
21
+ if (envKey && process.env[envKey]) {
22
+ const parsed = parseInt(process.env[envKey], 10);
23
+ if (!isNaN(parsed) && parsed > 0) {
24
+ return parsed;
25
+ }
26
+ }
27
+ if (defaultMap[endpoint]) {
28
+ return defaultMap[endpoint];
29
+ }
30
+ if (process.env[ENV_KEYS.RATE_LIMIT_DEFAULT]) {
31
+ const parsed = parseInt(process.env[ENV_KEYS.RATE_LIMIT_DEFAULT], 10);
32
+ if (!isNaN(parsed) && parsed > 0) {
33
+ return parsed;
34
+ }
35
+ }
36
+ return RATE_LIMITS.DEFAULT_RPM;
37
+ }
38
+ function normalizeEndpoint(path) {
39
+ if (/^\/a2a\/tasks\/[^/]+$/.test(path)) {
40
+ return '/a2a/tasks/:taskId';
41
+ }
42
+ if (/^\/a2a\/tasks\/[^/]+\/cancel$/.test(path)) {
43
+ return '/a2a/tasks/:taskId/cancel';
44
+ }
45
+ return path;
46
+ }
47
+ function getBucket(agentId, endpoint) {
48
+ const key = `${agentId}:${endpoint}`;
49
+ let bucket = buckets.get(key);
50
+ if (!bucket) {
51
+ const maxTokens = getRateLimitConfig(endpoint);
52
+ const refillRate = maxTokens / 60_000;
53
+ bucket = {
54
+ tokens: maxTokens,
55
+ maxTokens,
56
+ lastRefill: Date.now(),
57
+ refillRate,
58
+ };
59
+ buckets.set(key, bucket);
60
+ }
61
+ return bucket;
62
+ }
63
+ function refillTokens(key, bucket) {
64
+ if (refillGuard.has(key)) {
65
+ return;
66
+ }
67
+ refillGuard.add(key);
68
+ try {
69
+ const now = Date.now();
70
+ const elapsed = now - bucket.lastRefill;
71
+ const tokensToAdd = elapsed * bucket.refillRate;
72
+ if (tokensToAdd > 0) {
73
+ bucket.tokens = Math.min(bucket.maxTokens, bucket.tokens + tokensToAdd);
74
+ bucket.lastRefill = now;
75
+ }
76
+ }
77
+ finally {
78
+ refillGuard.delete(key);
79
+ }
80
+ }
81
+ function tryConsume(key, bucket) {
82
+ refillTokens(key, bucket);
83
+ if (bucket.tokens >= 1) {
84
+ bucket.tokens -= 1;
85
+ return true;
86
+ }
87
+ return false;
88
+ }
89
+ function calculateRetryAfter(bucket) {
90
+ const tokensNeeded = 1 - bucket.tokens;
91
+ const msNeeded = tokensNeeded / bucket.refillRate;
92
+ return Math.ceil(msNeeded / 1000);
93
+ }
94
+ function updateStats(agentId, endpoint, exceeded) {
95
+ const key = `${agentId}:${endpoint}`;
96
+ let stat = stats.get(key);
97
+ if (!stat) {
98
+ stat = {
99
+ agentId,
100
+ endpoint,
101
+ limitExceeded: 0,
102
+ totalRequests: 0,
103
+ };
104
+ stats.set(key, stat);
105
+ }
106
+ stat.totalRequests += 1;
107
+ if (exceeded) {
108
+ stat.limitExceeded += 1;
109
+ stat.lastLimitHit = Date.now();
110
+ logger.warn('[Rate Limit] Limit exceeded', {
111
+ agentId,
112
+ endpoint,
113
+ totalExceeded: stat.limitExceeded,
114
+ totalRequests: stat.totalRequests,
115
+ });
116
+ }
117
+ }
118
+ function cleanup() {
119
+ const now = Date.now();
120
+ const expirationThreshold = 10 * 60_000;
121
+ for (const [key, bucket] of buckets.entries()) {
122
+ if (now - bucket.lastRefill > expirationThreshold) {
123
+ buckets.delete(key);
124
+ }
125
+ }
126
+ for (const [key, stat] of stats.entries()) {
127
+ if (stat.lastLimitHit && now - stat.lastLimitHit > expirationThreshold) {
128
+ stats.delete(key);
129
+ }
130
+ }
131
+ logger.debug('[Rate Limit] Cleanup completed', {
132
+ remainingBuckets: buckets.size,
133
+ remainingStats: stats.size,
134
+ });
135
+ }
136
+ export function startCleanup() {
137
+ if (cleanupTimer) {
138
+ return;
139
+ }
140
+ cleanupTimer = setInterval(cleanup, RATE_LIMITS.CLEANUP_INTERVAL_MS);
141
+ logger.info('[Rate Limit] Cleanup started', {
142
+ intervalMs: RATE_LIMITS.CLEANUP_INTERVAL_MS,
143
+ });
144
+ }
145
+ export function stopCleanup() {
146
+ if (cleanupTimer) {
147
+ clearInterval(cleanupTimer);
148
+ cleanupTimer = null;
149
+ logger.info('[Rate Limit] Cleanup stopped');
150
+ }
151
+ }
152
+ export function getRateLimitStats() {
153
+ return Array.from(stats.values());
154
+ }
155
+ export function clearRateLimitData() {
156
+ buckets.clear();
157
+ stats.clear();
158
+ }
159
+ export function rateLimitMiddleware(req, res, next) {
160
+ const agentId = req.agentId;
161
+ if (!agentId) {
162
+ logger.error('[Rate Limit] Missing agentId in authenticated request');
163
+ res.status(500).json({
164
+ success: false,
165
+ error: {
166
+ code: 'INTERNAL_ERROR',
167
+ message: 'Internal server error',
168
+ },
169
+ });
170
+ return;
171
+ }
172
+ const endpoint = normalizeEndpoint(req.path);
173
+ const key = `${agentId}:${endpoint}`;
174
+ const bucket = getBucket(agentId, endpoint);
175
+ const allowed = tryConsume(key, bucket);
176
+ updateStats(agentId, endpoint, !allowed);
177
+ if (!allowed) {
178
+ const retryAfter = calculateRetryAfter(bucket);
179
+ res.setHeader('Retry-After', retryAfter.toString());
180
+ res.status(429).json({
181
+ success: false,
182
+ error: {
183
+ code: 'RATE_LIMIT_EXCEEDED',
184
+ message: `Rate limit exceeded. Try again in ${retryAfter} seconds.`,
185
+ retryAfter,
186
+ },
187
+ });
188
+ return;
189
+ }
190
+ next();
191
+ }
192
+ //# sourceMappingURL=rateLimit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/rateLimit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Request, Response, NextFunction } from 'express';
2
+ export declare function startResourceProtectionCleanup(): void;
3
+ export declare function stopResourceProtectionCleanup(): void;
4
+ export declare function clearConnectionTracking(): void;
5
+ export declare function getConnectionStats(): {
6
+ totalIPs: number;
7
+ totalConnections: number;
8
+ topIPs: Array<{
9
+ ip: string;
10
+ connections: number;
11
+ }>;
12
+ };
13
+ export declare function connectionLimitMiddleware(): (req: Request, res: Response, next: NextFunction) => void;
14
+ export declare function payloadSizeLimitMiddleware(): (req: Request, res: Response, next: NextFunction) => void;
15
+ export declare function memoryPressureMiddleware(): (req: Request, res: Response, next: NextFunction) => void;
16
+ export declare function resourceProtectionMiddleware(): ((req: Request, res: Response, next: NextFunction) => void)[];
17
+ //# sourceMappingURL=resourceProtection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceProtection.d.ts","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/resourceProtection.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAuI/D,wBAAgB,8BAA8B,IAAI,IAAI,CAWrD;AAKD,wBAAgB,6BAA6B,IAAI,IAAI,CAMpD;AAKD,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C;AAKD,wBAAgB,kBAAkB,IAAI;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpD,CAkBA;AAaD,wBAAgB,yBAAyB,KAI/B,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAyF/D;AAeD,wBAAgB,0BAA0B,KAIhC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CA2C/D;AAqBD,wBAAgB,wBAAwB,KAG9B,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CAiC/D;AA4BD,wBAAgB,4BAA4B,WA5O7B,OAAO,OAAO,QAAQ,QAAQ,YAAY,KAAG,IAAI,IAkP/D"}
@@ -0,0 +1,258 @@
1
+ import v8 from 'v8';
2
+ import { logger } from '../../../utils/logger.js';
3
+ const connections = new Map();
4
+ const DEFAULT_MAX_TRACKED_IPS = 10_000;
5
+ function getMaxTrackedIPs() {
6
+ const env = process.env.A2A_MAX_TRACKED_IPS;
7
+ if (!env)
8
+ return DEFAULT_MAX_TRACKED_IPS;
9
+ const parsed = parseInt(env, 10);
10
+ if (isNaN(parsed) || parsed <= 0 || parsed > 1_000_000) {
11
+ logger.warn(`Invalid A2A_MAX_TRACKED_IPS: ${env}, using default ${DEFAULT_MAX_TRACKED_IPS}`);
12
+ return DEFAULT_MAX_TRACKED_IPS;
13
+ }
14
+ return parsed;
15
+ }
16
+ let lastCapacityWarningTime = 0;
17
+ const CAPACITY_WARNING_COOLDOWN_MS = 60_000;
18
+ const DEFAULT_MAX_CONNECTIONS_PER_IP = 10;
19
+ const DEFAULT_MAX_PAYLOAD_SIZE_MB = 10;
20
+ const DEFAULT_CONNECTION_IDLE_TIMEOUT_MS = 5 * 60 * 1000;
21
+ const DEFAULT_MEMORY_PRESSURE_THRESHOLD = 85;
22
+ let cleanupTimer = null;
23
+ function getMaxConnectionsPerIP() {
24
+ const env = process.env.A2A_MAX_CONNECTIONS_PER_IP;
25
+ if (!env)
26
+ return DEFAULT_MAX_CONNECTIONS_PER_IP;
27
+ const parsed = parseInt(env, 10);
28
+ if (isNaN(parsed) || parsed <= 0) {
29
+ logger.warn(`Invalid A2A_MAX_CONNECTIONS_PER_IP: ${env}, using default ${DEFAULT_MAX_CONNECTIONS_PER_IP}`);
30
+ return DEFAULT_MAX_CONNECTIONS_PER_IP;
31
+ }
32
+ return parsed;
33
+ }
34
+ function getMaxPayloadSizeMB() {
35
+ const env = process.env.A2A_MAX_PAYLOAD_SIZE_MB;
36
+ if (!env)
37
+ return DEFAULT_MAX_PAYLOAD_SIZE_MB;
38
+ const parsed = parseInt(env, 10);
39
+ if (isNaN(parsed) || parsed <= 0 || parsed > 100) {
40
+ logger.warn(`Invalid A2A_MAX_PAYLOAD_SIZE_MB: ${env}, using default ${DEFAULT_MAX_PAYLOAD_SIZE_MB}`);
41
+ return DEFAULT_MAX_PAYLOAD_SIZE_MB;
42
+ }
43
+ return parsed;
44
+ }
45
+ function cleanupIdleConnections(aggressive = false) {
46
+ const now = Date.now();
47
+ const timeout = aggressive
48
+ ? 30_000
49
+ : DEFAULT_CONNECTION_IDLE_TIMEOUT_MS;
50
+ let cleaned = 0;
51
+ for (const [ip, data] of connections.entries()) {
52
+ if (data.count === 0 || now - data.lastActivity > timeout) {
53
+ connections.delete(ip);
54
+ cleaned++;
55
+ }
56
+ }
57
+ if (cleaned > 0) {
58
+ logger.debug('[Resource Protection] Cleaned up idle connections', {
59
+ count: cleaned,
60
+ remaining: connections.size,
61
+ aggressive,
62
+ });
63
+ }
64
+ return cleaned;
65
+ }
66
+ export function startResourceProtectionCleanup() {
67
+ if (cleanupTimer) {
68
+ return;
69
+ }
70
+ cleanupTimer = setInterval(() => {
71
+ cleanupIdleConnections();
72
+ }, 60 * 1000);
73
+ logger.info('[Resource Protection] Cleanup started');
74
+ }
75
+ export function stopResourceProtectionCleanup() {
76
+ if (cleanupTimer) {
77
+ clearInterval(cleanupTimer);
78
+ cleanupTimer = null;
79
+ logger.info('[Resource Protection] Cleanup stopped');
80
+ }
81
+ }
82
+ export function clearConnectionTracking() {
83
+ connections.clear();
84
+ }
85
+ export function getConnectionStats() {
86
+ const totalIPs = connections.size;
87
+ let totalConnections = 0;
88
+ for (const data of connections.values()) {
89
+ totalConnections += data.count;
90
+ }
91
+ const topIPs = Array.from(connections.entries())
92
+ .map(([ip, data]) => ({ ip, connections: data.count }))
93
+ .sort((a, b) => b.connections - a.connections)
94
+ .slice(0, 10);
95
+ return {
96
+ totalIPs,
97
+ totalConnections,
98
+ topIPs,
99
+ };
100
+ }
101
+ export function connectionLimitMiddleware() {
102
+ const maxConnections = getMaxConnectionsPerIP();
103
+ const maxTrackedIPs = getMaxTrackedIPs();
104
+ return (req, res, next) => {
105
+ const ip = req.ip || req.socket.remoteAddress || 'unknown';
106
+ const now = Date.now();
107
+ let connectionData = connections.get(ip);
108
+ if (!connectionData) {
109
+ if (connections.size >= maxTrackedIPs) {
110
+ const cleaned = cleanupIdleConnections(true);
111
+ if (connections.size >= maxTrackedIPs) {
112
+ if (now - lastCapacityWarningTime > CAPACITY_WARNING_COOLDOWN_MS) {
113
+ lastCapacityWarningTime = now;
114
+ logger.warn('[Resource Protection] IP tracking capacity exhausted', {
115
+ maxTrackedIPs,
116
+ currentTrackedIPs: connections.size,
117
+ cleanedInAttempt: cleaned,
118
+ rejectedIP: ip,
119
+ });
120
+ }
121
+ res.status(503).json({
122
+ success: false,
123
+ error: {
124
+ code: 'SERVICE_OVERLOADED',
125
+ message: 'Service temporarily overloaded, please try again later',
126
+ },
127
+ });
128
+ return;
129
+ }
130
+ }
131
+ connectionData = { count: 0, lastActivity: now };
132
+ connections.set(ip, connectionData);
133
+ }
134
+ if (connectionData.count >= maxConnections) {
135
+ logger.warn('[Resource Protection] Connection limit exceeded', {
136
+ ip,
137
+ currentConnections: connectionData.count,
138
+ maxConnections,
139
+ });
140
+ res.status(503).json({
141
+ success: false,
142
+ error: {
143
+ code: 'CONNECTION_LIMIT_EXCEEDED',
144
+ message: `Too many concurrent connections from your IP. Maximum: ${maxConnections}`,
145
+ },
146
+ });
147
+ return;
148
+ }
149
+ connectionData.count++;
150
+ connectionData.lastActivity = now;
151
+ let decremented = false;
152
+ const decrementConnection = () => {
153
+ if (decremented)
154
+ return;
155
+ decremented = true;
156
+ const data = connections.get(ip);
157
+ if (data) {
158
+ data.count = Math.max(0, data.count - 1);
159
+ data.lastActivity = Date.now();
160
+ if (data.count === 0) {
161
+ connections.delete(ip);
162
+ }
163
+ }
164
+ };
165
+ res.on('finish', decrementConnection);
166
+ res.on('close', decrementConnection);
167
+ next();
168
+ };
169
+ }
170
+ export function payloadSizeLimitMiddleware() {
171
+ const maxSizeMB = getMaxPayloadSizeMB();
172
+ const maxSizeBytes = maxSizeMB * 1024 * 1024;
173
+ return (req, res, next) => {
174
+ const contentLength = req.get('content-length');
175
+ if (contentLength) {
176
+ const size = parseInt(contentLength, 10);
177
+ if (isNaN(size)) {
178
+ logger.warn('[Resource Protection] Invalid Content-Length header', {
179
+ contentLength,
180
+ ip: req.ip,
181
+ });
182
+ res.status(400).json({
183
+ success: false,
184
+ error: {
185
+ code: 'INVALID_CONTENT_LENGTH',
186
+ message: 'Invalid Content-Length header',
187
+ },
188
+ });
189
+ return;
190
+ }
191
+ if (size > maxSizeBytes) {
192
+ logger.warn('[Resource Protection] Payload size exceeded', {
193
+ size,
194
+ maxSize: maxSizeBytes,
195
+ ip: req.ip,
196
+ });
197
+ res.status(413).json({
198
+ success: false,
199
+ error: {
200
+ code: 'PAYLOAD_TOO_LARGE',
201
+ message: `Request payload too large. Maximum: ${maxSizeMB}MB`,
202
+ maxSizeMB,
203
+ },
204
+ });
205
+ return;
206
+ }
207
+ }
208
+ next();
209
+ };
210
+ }
211
+ export function memoryPressureMiddleware() {
212
+ const threshold = getMemoryPressureThreshold();
213
+ return (req, res, next) => {
214
+ const heapStats = v8.getHeapStatistics();
215
+ const heapUsedMB = heapStats.used_heap_size / 1024 / 1024;
216
+ const heapLimitMB = heapStats.heap_size_limit / 1024 / 1024;
217
+ const heapUsagePercent = (heapUsedMB / heapLimitMB) * 100;
218
+ const memUsage = process.memoryUsage();
219
+ const heapTotalMB = memUsage.heapTotal / 1024 / 1024;
220
+ if (heapUsagePercent > threshold) {
221
+ logger.warn('[Resource Protection] High memory pressure', {
222
+ heapUsedMB: heapUsedMB.toFixed(2),
223
+ heapLimitMB: heapLimitMB.toFixed(2),
224
+ heapTotalMB: heapTotalMB.toFixed(2),
225
+ heapUsagePercent: heapUsagePercent.toFixed(2),
226
+ threshold,
227
+ });
228
+ res.status(503).json({
229
+ success: false,
230
+ error: {
231
+ code: 'SERVICE_OVERLOADED',
232
+ message: 'Service temporarily overloaded, please try again later',
233
+ },
234
+ });
235
+ return;
236
+ }
237
+ next();
238
+ };
239
+ }
240
+ function getMemoryPressureThreshold() {
241
+ const env = process.env.A2A_MEMORY_PRESSURE_THRESHOLD;
242
+ if (!env)
243
+ return DEFAULT_MEMORY_PRESSURE_THRESHOLD;
244
+ const parsed = parseInt(env, 10);
245
+ if (isNaN(parsed) || parsed <= 0 || parsed > 100) {
246
+ logger.warn(`Invalid A2A_MEMORY_PRESSURE_THRESHOLD: ${env}, using default ${DEFAULT_MEMORY_PRESSURE_THRESHOLD}`);
247
+ return DEFAULT_MEMORY_PRESSURE_THRESHOLD;
248
+ }
249
+ return parsed;
250
+ }
251
+ export function resourceProtectionMiddleware() {
252
+ return [
253
+ memoryPressureMiddleware(),
254
+ connectionLimitMiddleware(),
255
+ payloadSizeLimitMiddleware(),
256
+ ];
257
+ }
258
+ //# sourceMappingURL=resourceProtection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceProtection.js","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/resourceProtection.ts"],"names":[],"mappings":"AAqBA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAOlD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAmD,CAAC;AAK/E,MAAM,uBAAuB,GAAG,MAAM,CAAC;AAevC,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IAC5C,IAAI,CAAC,GAAG;QAAE,OAAO,uBAAuB,CAAC;IAEzC,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,SAAS,EAAE,CAAC;QACvD,MAAM,CAAC,IAAI,CAAC,gCAAgC,GAAG,mBAAmB,uBAAuB,EAAE,CAAC,CAAC;QAC7F,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAMD,IAAI,uBAAuB,GAAG,CAAC,CAAC;AAChC,MAAM,4BAA4B,GAAG,MAAM,CAAC;AAK5C,MAAM,8BAA8B,GAAG,EAAE,CAAC;AAC1C,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,kCAAkC,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AAKzD,MAAM,iCAAiC,GAAG,EAAE,CAAC;AAK7C,IAAI,YAAY,GAA0B,IAAI,CAAC;AAK/C,SAAS,sBAAsB;IAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;IACnD,IAAI,CAAC,GAAG;QAAE,OAAO,8BAA8B,CAAC;IAEhD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,uCAAuC,GAAG,mBAAmB,8BAA8B,EAAE,CAAC,CAAC;QAC3G,OAAO,8BAA8B,CAAC;IACxC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;IAChD,IAAI,CAAC,GAAG;QAAE,OAAO,2BAA2B,CAAC;IAE7C,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,oCAAoC,GAAG,mBAAmB,2BAA2B,EAAE,CAAC,CAAC;QACrG,OAAO,2BAA2B,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAYD,SAAS,sBAAsB,CAAC,UAAU,GAAG,KAAK;IAChD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEvB,MAAM,OAAO,GAAG,UAAU;QACxB,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,kCAAkC,CAAC;IACvC,IAAI,OAAO,GAAG,CAAC,CAAC;IAEhB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,CAAC;QAE/C,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,OAAO,EAAE,CAAC;YAC1D,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,mDAAmD,EAAE;YAChE,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,WAAW,CAAC,IAAI;YAC3B,UAAU;SACX,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAKD,MAAM,UAAU,8BAA8B;IAC5C,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAGD,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QAC9B,sBAAsB,EAAE,CAAC;IAC3B,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;IAEd,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;AACvD,CAAC;AAKD,MAAM,UAAU,6BAA6B;IAC3C,IAAI,YAAY,EAAE,CAAC;QACjB,aAAa,CAAC,YAAY,CAAC,CAAC;QAC5B,YAAY,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC;AAKD,MAAM,UAAU,uBAAuB;IACrC,WAAW,CAAC,KAAK,EAAE,CAAC;AACtB,CAAC;AAKD,MAAM,UAAU,kBAAkB;IAKhC,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC;IAClC,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;QACxC,gBAAgB,IAAI,IAAI,CAAC,KAAK,CAAC;IACjC,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;SACtD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;SAC7C,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEhB,OAAO;QACL,QAAQ;QACR,gBAAgB;QAChB,MAAM;KACP,CAAC;AACJ,CAAC;AAaD,MAAM,UAAU,yBAAyB;IACvC,MAAM,cAAc,GAAG,sBAAsB,EAAE,CAAC;IAChD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,MAAM,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAGvB,IAAI,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,cAAc,EAAE,CAAC;YAEpB,IAAI,WAAW,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;gBAEtC,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAE7C,IAAI,WAAW,CAAC,IAAI,IAAI,aAAa,EAAE,CAAC;oBAEtC,IAAI,GAAG,GAAG,uBAAuB,GAAG,4BAA4B,EAAE,CAAC;wBACjE,uBAAuB,GAAG,GAAG,CAAC;wBAC9B,MAAM,CAAC,IAAI,CAAC,sDAAsD,EAAE;4BAClE,aAAa;4BACb,iBAAiB,EAAE,WAAW,CAAC,IAAI;4BACnC,gBAAgB,EAAE,OAAO;4BACzB,UAAU,EAAE,EAAE;yBACf,CAAC,CAAC;oBACL,CAAC;oBAED,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE;4BACL,IAAI,EAAE,oBAAoB;4BAC1B,OAAO,EAAE,wDAAwD;yBAClE;qBACF,CAAC,CAAC;oBACH,OAAO;gBACT,CAAC;YACH,CAAC;YAED,cAAc,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;YACjD,WAAW,CAAC,GAAG,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC;QACtC,CAAC;QAGD,IAAI,cAAc,CAAC,KAAK,IAAI,cAAc,EAAE,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,iDAAiD,EAAE;gBAC7D,EAAE;gBACF,kBAAkB,EAAE,cAAc,CAAC,KAAK;gBACxC,cAAc;aACf,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,2BAA2B;oBACjC,OAAO,EAAE,0DAA0D,cAAc,EAAE;iBACpF;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAGD,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,cAAc,CAAC,YAAY,GAAG,GAAG,CAAC;QAKlC,IAAI,WAAW,GAAG,KAAK,CAAC;QAExB,MAAM,mBAAmB,GAAG,GAAS,EAAE;YACrC,IAAI,WAAW;gBAAE,OAAO;YACxB,WAAW,GAAG,IAAI,CAAC;YAEnB,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACzC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAG/B,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBACrB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAGF,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QACtC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;QAErC,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAeD,MAAM,UAAU,0BAA0B;IACxC,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,YAAY,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;IAE7C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAC/D,MAAM,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAEhD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YAEzC,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,qDAAqD,EAAE;oBACjE,aAAa;oBACb,EAAE,EAAE,GAAG,CAAC,EAAE;iBACX,CAAC,CAAC;gBAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,wBAAwB;wBAC9B,OAAO,EAAE,+BAA+B;qBACzC;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,IAAI,IAAI,GAAG,YAAY,EAAE,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,6CAA6C,EAAE;oBACzD,IAAI;oBACJ,OAAO,EAAE,YAAY;oBACrB,EAAE,EAAE,GAAG,CAAC,EAAE;iBACX,CAAC,CAAC;gBAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,mBAAmB;wBACzB,OAAO,EAAE,uCAAuC,SAAS,IAAI;wBAC7D,SAAS;qBACV;iBACF,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;QACH,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAqBD,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,0BAA0B,EAAE,CAAC;IAE/C,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAE/D,MAAM,SAAS,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC;QACzC,MAAM,UAAU,GAAG,SAAS,CAAC,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;QAC1D,MAAM,WAAW,GAAG,SAAS,CAAC,eAAe,GAAG,IAAI,GAAG,IAAI,CAAC;QAC5D,MAAM,gBAAgB,GAAG,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC;QAG1D,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;QAGrD,IAAI,gBAAgB,GAAG,SAAS,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;gBACxD,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;gBACnC,gBAAgB,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;gBAC7C,SAAS;aACV,CAAC,CAAC;YAEH,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,oBAAoB;oBAC1B,OAAO,EAAE,wDAAwD;iBAClE;aACF,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC;AAKD,SAAS,0BAA0B;IACjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;IACtD,IAAI,CAAC,GAAG;QAAE,OAAO,iCAAiC,CAAC;IAEnD,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,GAAG,EAAE,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,0CAA0C,GAAG,mBAAmB,iCAAiC,EAAE,CAAC,CAAC;QACjH,OAAO,iCAAiC,CAAC;IAC3C,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAYD,MAAM,UAAU,4BAA4B;IAC1C,OAAO;QACL,wBAAwB,EAAE;QAC1B,yBAAyB,EAAE;QAC3B,0BAA0B,EAAE;KAC7B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Request, Response, NextFunction } from 'express';
2
+ export declare function getTimeoutMs(): number;
3
+ export declare function requestTimeoutMiddleware(timeoutMs?: number): (req: Request, res: Response, next: NextFunction) => void;
4
+ //# sourceMappingURL=timeout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/timeout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAuB1D,wBAAgB,YAAY,IAAI,MAAM,CAiCrC;AAaD,wBAAgB,wBAAwB,CAAC,SAAS,GAAE,MAAuB,IACjE,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,KAAG,IAAI,CA2B/D"}
@@ -0,0 +1,56 @@
1
+ import { logger } from '../../../utils/logger.js';
2
+ const DEFAULT_TIMEOUT_MS = 30_000;
3
+ const MIN_TIMEOUT_MS = 1_000;
4
+ const MAX_TIMEOUT_MS = 300_000;
5
+ export function getTimeoutMs() {
6
+ const envTimeout = process.env.A2A_REQUEST_TIMEOUT_MS;
7
+ if (!envTimeout) {
8
+ return DEFAULT_TIMEOUT_MS;
9
+ }
10
+ const parsed = parseInt(envTimeout, 10);
11
+ if (isNaN(parsed) || parsed <= 0) {
12
+ logger.warn('[Timeout] Invalid A2A_REQUEST_TIMEOUT_MS value, using default', {
13
+ provided: envTimeout,
14
+ default: DEFAULT_TIMEOUT_MS,
15
+ });
16
+ return DEFAULT_TIMEOUT_MS;
17
+ }
18
+ if (parsed < MIN_TIMEOUT_MS) {
19
+ logger.warn('[Timeout] A2A_REQUEST_TIMEOUT_MS below minimum, clamping', {
20
+ provided: parsed,
21
+ minimum: MIN_TIMEOUT_MS,
22
+ });
23
+ return MIN_TIMEOUT_MS;
24
+ }
25
+ if (parsed > MAX_TIMEOUT_MS) {
26
+ logger.warn('[Timeout] A2A_REQUEST_TIMEOUT_MS exceeds maximum, clamping', {
27
+ provided: parsed,
28
+ maximum: MAX_TIMEOUT_MS,
29
+ });
30
+ return MAX_TIMEOUT_MS;
31
+ }
32
+ return parsed;
33
+ }
34
+ export function requestTimeoutMiddleware(timeoutMs = getTimeoutMs()) {
35
+ return (req, res, next) => {
36
+ const timer = setTimeout(() => {
37
+ if (!res.headersSent) {
38
+ res.status(408).json({
39
+ success: false,
40
+ error: {
41
+ code: 'REQUEST_TIMEOUT',
42
+ message: `Request timeout after ${timeoutMs}ms`
43
+ }
44
+ });
45
+ }
46
+ }, timeoutMs);
47
+ res.on('finish', () => {
48
+ clearTimeout(timer);
49
+ });
50
+ res.on('close', () => {
51
+ clearTimeout(timer);
52
+ });
53
+ next();
54
+ };
55
+ }
56
+ //# sourceMappingURL=timeout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../../../src/a2a/server/middleware/timeout.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAKlD,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAKlC,MAAM,cAAc,GAAG,KAAK,CAAC;AAM7B,MAAM,cAAc,GAAG,OAAO,CAAC;AAM/B,MAAM,UAAU,YAAY;IAC1B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;IACtD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,+DAA+D,EAAE;YAC3E,QAAQ,EAAE,UAAU;YACpB,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;QACH,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAGD,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,0DAA0D,EAAE;YACtE,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,IAAI,MAAM,GAAG,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,4DAA4D,EAAE;YACxE,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QACH,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAaD,MAAM,UAAU,wBAAwB,CAAC,YAAoB,YAAY,EAAE;IACzE,OAAO,CAAC,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAQ,EAAE;QAE/D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAE5B,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;gBACrB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBACnB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,iBAAiB;wBACvB,OAAO,EAAE,yBAAyB,SAAS,IAAI;qBAChD;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC,EAAE,SAAS,CAAC,CAAC;QAGd,GAAG,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAGH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/a2a/server/middleware.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAO/D,wBAAgB,YAAY,CAC1B,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,YAAY,GAClB,IAAI,CAoBN;AAKD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAcnF;AAMD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAwBpF;AAKD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,KAAK,EACV,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAeN"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/a2a/server/middleware.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAO/D,wBAAgB,YAAY,CAC1B,GAAG,EAAE,KAAK,EACV,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,YAAY,GAClB,IAAI,CAoBN;AAKD,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAcnF;AASD,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,CAgCpF;AAKD,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,KAAK,EACV,IAAI,EAAE,OAAO,EACb,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,GACjB,IAAI,CAeN"}
@@ -33,16 +33,19 @@ export function requestLogger(req, res, next) {
33
33
  }
34
34
  export function corsMiddleware(req, res, next) {
35
35
  const origin = req.headers.origin;
36
- const isLocalhost = origin && (origin.startsWith('http://localhost:') ||
37
- origin.startsWith('http://127.0.0.1:') ||
38
- origin.startsWith('https://localhost:') ||
39
- origin.startsWith('https://127.0.0.1:'));
40
- if (isLocalhost) {
36
+ const ALLOWED_LOCALHOST_PATTERNS = [
37
+ 'http://localhost:',
38
+ 'http://127.0.0.1:',
39
+ 'https://localhost:',
40
+ 'https://127.0.0.1:',
41
+ ];
42
+ const isValidLocalhost = origin && ALLOWED_LOCALHOST_PATTERNS.some((pattern) => origin.startsWith(pattern));
43
+ if (isValidLocalhost) {
41
44
  res.header('Access-Control-Allow-Origin', origin);
45
+ res.header('Access-Control-Allow-Credentials', 'true');
42
46
  }
43
47
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
44
48
  res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization');
45
- res.header('Access-Control-Allow-Credentials', 'true');
46
49
  if (req.method === 'OPTIONS') {
47
50
  res.sendStatus(200);
48
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/a2a/server/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../../src/a2a/server/middleware.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,14 @@
1
1
  import type { Request, Response, NextFunction } from 'express';
2
2
  import type { AgentCard } from '../types/index.js';
3
3
  import { TaskQueue } from '../storage/TaskQueue.js';
4
+ import type { MCPTaskDelegator } from '../delegator/MCPTaskDelegator.js';
4
5
  export declare class A2ARoutes {
5
6
  private _agentId;
6
7
  private taskQueue;
7
8
  private agentCard;
9
+ private delegator;
8
10
  constructor(_agentId: string, taskQueue: TaskQueue, agentCard: AgentCard);
11
+ setDelegator(delegator: MCPTaskDelegator): void;
9
12
  sendMessage: (req: Request, res: Response, next: NextFunction) => Promise<void>;
10
13
  getTask: (req: Request, res: Response, next: NextFunction) => Promise<void>;
11
14
  listTasks: (req: Request, res: Response, next: NextFunction) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/a2a/server/routes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EASV,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,qBAAa,SAAS;IAElB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;gBAFT,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS;IAG9B,WAAW,GACT,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CA+Cd;IAEF,OAAO,GACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAiCd;IAEF,SAAS,GACP,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAmCd;IAEF,YAAY,GACV,MAAM,OAAO,EACb,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAWd;IAEF,UAAU,GACR,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAmCd;CACH"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/a2a/server/routes.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,KAAK,EAQV,SAAS,EACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAIpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEzE,qBAAa,SAAS;IAIlB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,SAAS;IALnB,OAAO,CAAC,SAAS,CAAiC;gBAGxC,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS;IAO9B,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAI/C,WAAW,GACT,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAwDd;IAEF,OAAO,GACL,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAiCd;IAEF,SAAS,GACP,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAmCd;IAEF,YAAY,GACV,MAAM,OAAO,EACb,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAWd;IAEF,UAAU,GACR,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,MAAM,YAAY,KACjB,OAAO,CAAC,IAAI,CAAC,CAyCd;CACH"}