agentic-qe 3.3.4 → 3.4.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 (457) hide show
  1. package/.claude/agents/v3/qe-queen-coordinator.md +332 -166
  2. package/.claude/helpers/statusline-v3.cjs +85 -42
  3. package/.claude/skills/qcsd-ideation-swarm/SKILL.md +7 -4
  4. package/README.md +71 -2
  5. package/package.json +1 -1
  6. package/scripts/cloud-db-config.json +10 -5
  7. package/scripts/merge-v3-to-root.sql +48 -0
  8. package/v3/CHANGELOG.md +156 -0
  9. package/v3/README.md +118 -1
  10. package/v3/assets/agents/v3/qe-queen-coordinator.md +332 -166
  11. package/v3/assets/skills/qcsd-ideation-swarm/SKILL.md +7 -4
  12. package/v3/dist/adapters/a2a/agent-cards/generator.d.ts +153 -0
  13. package/v3/dist/adapters/a2a/agent-cards/generator.d.ts.map +1 -0
  14. package/v3/dist/adapters/a2a/agent-cards/generator.js +478 -0
  15. package/v3/dist/adapters/a2a/agent-cards/generator.js.map +1 -0
  16. package/v3/dist/adapters/a2a/agent-cards/schema.d.ts +274 -0
  17. package/v3/dist/adapters/a2a/agent-cards/schema.d.ts.map +1 -0
  18. package/v3/dist/adapters/a2a/agent-cards/schema.js +135 -0
  19. package/v3/dist/adapters/a2a/agent-cards/schema.js.map +1 -0
  20. package/v3/dist/adapters/a2a/agent-cards/validator.d.ts +514 -0
  21. package/v3/dist/adapters/a2a/agent-cards/validator.d.ts.map +1 -0
  22. package/v3/dist/adapters/a2a/agent-cards/validator.js +555 -0
  23. package/v3/dist/adapters/a2a/agent-cards/validator.js.map +1 -0
  24. package/v3/dist/adapters/a2a/auth/index.d.ts +23 -0
  25. package/v3/dist/adapters/a2a/auth/index.d.ts.map +1 -0
  26. package/v3/dist/adapters/a2a/auth/index.js +85 -0
  27. package/v3/dist/adapters/a2a/auth/index.js.map +1 -0
  28. package/v3/dist/adapters/a2a/auth/jwt-utils.d.ts +215 -0
  29. package/v3/dist/adapters/a2a/auth/jwt-utils.d.ts.map +1 -0
  30. package/v3/dist/adapters/a2a/auth/jwt-utils.js +314 -0
  31. package/v3/dist/adapters/a2a/auth/jwt-utils.js.map +1 -0
  32. package/v3/dist/adapters/a2a/auth/middleware.d.ts +173 -0
  33. package/v3/dist/adapters/a2a/auth/middleware.d.ts.map +1 -0
  34. package/v3/dist/adapters/a2a/auth/middleware.js +300 -0
  35. package/v3/dist/adapters/a2a/auth/middleware.js.map +1 -0
  36. package/v3/dist/adapters/a2a/auth/oauth-provider.d.ts +308 -0
  37. package/v3/dist/adapters/a2a/auth/oauth-provider.d.ts.map +1 -0
  38. package/v3/dist/adapters/a2a/auth/oauth-provider.js +573 -0
  39. package/v3/dist/adapters/a2a/auth/oauth-provider.js.map +1 -0
  40. package/v3/dist/adapters/a2a/auth/routes.d.ts +244 -0
  41. package/v3/dist/adapters/a2a/auth/routes.d.ts.map +1 -0
  42. package/v3/dist/adapters/a2a/auth/routes.js +496 -0
  43. package/v3/dist/adapters/a2a/auth/routes.js.map +1 -0
  44. package/v3/dist/adapters/a2a/auth/scopes.d.ts +219 -0
  45. package/v3/dist/adapters/a2a/auth/scopes.d.ts.map +1 -0
  46. package/v3/dist/adapters/a2a/auth/scopes.js +292 -0
  47. package/v3/dist/adapters/a2a/auth/scopes.js.map +1 -0
  48. package/v3/dist/adapters/a2a/auth/token-store.d.ts +278 -0
  49. package/v3/dist/adapters/a2a/auth/token-store.d.ts.map +1 -0
  50. package/v3/dist/adapters/a2a/auth/token-store.js +453 -0
  51. package/v3/dist/adapters/a2a/auth/token-store.js.map +1 -0
  52. package/v3/dist/adapters/a2a/discovery/agent-health.d.ts +226 -0
  53. package/v3/dist/adapters/a2a/discovery/agent-health.d.ts.map +1 -0
  54. package/v3/dist/adapters/a2a/discovery/agent-health.js +426 -0
  55. package/v3/dist/adapters/a2a/discovery/agent-health.js.map +1 -0
  56. package/v3/dist/adapters/a2a/discovery/discovery-service.d.ts +296 -0
  57. package/v3/dist/adapters/a2a/discovery/discovery-service.d.ts.map +1 -0
  58. package/v3/dist/adapters/a2a/discovery/discovery-service.js +520 -0
  59. package/v3/dist/adapters/a2a/discovery/discovery-service.js.map +1 -0
  60. package/v3/dist/adapters/a2a/discovery/file-watcher.d.ts +166 -0
  61. package/v3/dist/adapters/a2a/discovery/file-watcher.d.ts.map +1 -0
  62. package/v3/dist/adapters/a2a/discovery/file-watcher.js +385 -0
  63. package/v3/dist/adapters/a2a/discovery/file-watcher.js.map +1 -0
  64. package/v3/dist/adapters/a2a/discovery/hot-reload-service.d.ts +226 -0
  65. package/v3/dist/adapters/a2a/discovery/hot-reload-service.d.ts.map +1 -0
  66. package/v3/dist/adapters/a2a/discovery/hot-reload-service.js +433 -0
  67. package/v3/dist/adapters/a2a/discovery/hot-reload-service.js.map +1 -0
  68. package/v3/dist/adapters/a2a/discovery/index.d.ts +18 -0
  69. package/v3/dist/adapters/a2a/discovery/index.d.ts.map +1 -0
  70. package/v3/dist/adapters/a2a/discovery/index.js +54 -0
  71. package/v3/dist/adapters/a2a/discovery/index.js.map +1 -0
  72. package/v3/dist/adapters/a2a/discovery/metrics.d.ts +200 -0
  73. package/v3/dist/adapters/a2a/discovery/metrics.d.ts.map +1 -0
  74. package/v3/dist/adapters/a2a/discovery/metrics.js +371 -0
  75. package/v3/dist/adapters/a2a/discovery/metrics.js.map +1 -0
  76. package/v3/dist/adapters/a2a/discovery/routes.d.ts +184 -0
  77. package/v3/dist/adapters/a2a/discovery/routes.d.ts.map +1 -0
  78. package/v3/dist/adapters/a2a/discovery/routes.js +453 -0
  79. package/v3/dist/adapters/a2a/discovery/routes.js.map +1 -0
  80. package/v3/dist/adapters/a2a/index.d.ts +18 -0
  81. package/v3/dist/adapters/a2a/index.d.ts.map +1 -0
  82. package/v3/dist/adapters/a2a/index.js +139 -0
  83. package/v3/dist/adapters/a2a/index.js.map +1 -0
  84. package/v3/dist/adapters/a2a/jsonrpc/envelope.d.ts +312 -0
  85. package/v3/dist/adapters/a2a/jsonrpc/envelope.d.ts.map +1 -0
  86. package/v3/dist/adapters/a2a/jsonrpc/envelope.js +554 -0
  87. package/v3/dist/adapters/a2a/jsonrpc/envelope.js.map +1 -0
  88. package/v3/dist/adapters/a2a/jsonrpc/errors.d.ts +244 -0
  89. package/v3/dist/adapters/a2a/jsonrpc/errors.d.ts.map +1 -0
  90. package/v3/dist/adapters/a2a/jsonrpc/errors.js +365 -0
  91. package/v3/dist/adapters/a2a/jsonrpc/errors.js.map +1 -0
  92. package/v3/dist/adapters/a2a/jsonrpc/index.d.ts +14 -0
  93. package/v3/dist/adapters/a2a/jsonrpc/index.d.ts.map +1 -0
  94. package/v3/dist/adapters/a2a/jsonrpc/index.js +59 -0
  95. package/v3/dist/adapters/a2a/jsonrpc/index.js.map +1 -0
  96. package/v3/dist/adapters/a2a/jsonrpc/methods.d.ts +400 -0
  97. package/v3/dist/adapters/a2a/jsonrpc/methods.d.ts.map +1 -0
  98. package/v3/dist/adapters/a2a/jsonrpc/methods.js +249 -0
  99. package/v3/dist/adapters/a2a/jsonrpc/methods.js.map +1 -0
  100. package/v3/dist/adapters/a2a/notifications/index.d.ts +60 -0
  101. package/v3/dist/adapters/a2a/notifications/index.d.ts.map +1 -0
  102. package/v3/dist/adapters/a2a/notifications/index.js +99 -0
  103. package/v3/dist/adapters/a2a/notifications/index.js.map +1 -0
  104. package/v3/dist/adapters/a2a/notifications/retry-queue.d.ts +225 -0
  105. package/v3/dist/adapters/a2a/notifications/retry-queue.d.ts.map +1 -0
  106. package/v3/dist/adapters/a2a/notifications/retry-queue.js +449 -0
  107. package/v3/dist/adapters/a2a/notifications/retry-queue.js.map +1 -0
  108. package/v3/dist/adapters/a2a/notifications/signature.d.ts +133 -0
  109. package/v3/dist/adapters/a2a/notifications/signature.d.ts.map +1 -0
  110. package/v3/dist/adapters/a2a/notifications/signature.js +244 -0
  111. package/v3/dist/adapters/a2a/notifications/signature.js.map +1 -0
  112. package/v3/dist/adapters/a2a/notifications/subscription-store.d.ts +243 -0
  113. package/v3/dist/adapters/a2a/notifications/subscription-store.d.ts.map +1 -0
  114. package/v3/dist/adapters/a2a/notifications/subscription-store.js +486 -0
  115. package/v3/dist/adapters/a2a/notifications/subscription-store.js.map +1 -0
  116. package/v3/dist/adapters/a2a/notifications/webhook-service.d.ts +257 -0
  117. package/v3/dist/adapters/a2a/notifications/webhook-service.d.ts.map +1 -0
  118. package/v3/dist/adapters/a2a/notifications/webhook-service.js +542 -0
  119. package/v3/dist/adapters/a2a/notifications/webhook-service.js.map +1 -0
  120. package/v3/dist/adapters/a2a/tasks/index.d.ts +16 -0
  121. package/v3/dist/adapters/a2a/tasks/index.d.ts.map +1 -0
  122. package/v3/dist/adapters/a2a/tasks/index.js +33 -0
  123. package/v3/dist/adapters/a2a/tasks/index.js.map +1 -0
  124. package/v3/dist/adapters/a2a/tasks/task-manager.d.ts +306 -0
  125. package/v3/dist/adapters/a2a/tasks/task-manager.d.ts.map +1 -0
  126. package/v3/dist/adapters/a2a/tasks/task-manager.js +562 -0
  127. package/v3/dist/adapters/a2a/tasks/task-manager.js.map +1 -0
  128. package/v3/dist/adapters/a2a/tasks/task-router.d.ts +270 -0
  129. package/v3/dist/adapters/a2a/tasks/task-router.d.ts.map +1 -0
  130. package/v3/dist/adapters/a2a/tasks/task-router.js +574 -0
  131. package/v3/dist/adapters/a2a/tasks/task-router.js.map +1 -0
  132. package/v3/dist/adapters/a2a/tasks/task-store.d.ts +251 -0
  133. package/v3/dist/adapters/a2a/tasks/task-store.d.ts.map +1 -0
  134. package/v3/dist/adapters/a2a/tasks/task-store.js +468 -0
  135. package/v3/dist/adapters/a2a/tasks/task-store.js.map +1 -0
  136. package/v3/dist/adapters/a2ui/accessibility/aria-attributes.d.ts +294 -0
  137. package/v3/dist/adapters/a2ui/accessibility/aria-attributes.d.ts.map +1 -0
  138. package/v3/dist/adapters/a2ui/accessibility/aria-attributes.js +447 -0
  139. package/v3/dist/adapters/a2ui/accessibility/aria-attributes.js.map +1 -0
  140. package/v3/dist/adapters/a2ui/accessibility/index.d.ts +83 -0
  141. package/v3/dist/adapters/a2ui/accessibility/index.d.ts.map +1 -0
  142. package/v3/dist/adapters/a2ui/accessibility/index.js +155 -0
  143. package/v3/dist/adapters/a2ui/accessibility/index.js.map +1 -0
  144. package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.d.ts +177 -0
  145. package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.d.ts.map +1 -0
  146. package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.js +638 -0
  147. package/v3/dist/adapters/a2ui/accessibility/keyboard-nav.js.map +1 -0
  148. package/v3/dist/adapters/a2ui/accessibility/wcag-validator.d.ts +186 -0
  149. package/v3/dist/adapters/a2ui/accessibility/wcag-validator.d.ts.map +1 -0
  150. package/v3/dist/adapters/a2ui/accessibility/wcag-validator.js +816 -0
  151. package/v3/dist/adapters/a2ui/accessibility/wcag-validator.js.map +1 -0
  152. package/v3/dist/adapters/a2ui/catalog/component-schemas.d.ts +227 -0
  153. package/v3/dist/adapters/a2ui/catalog/component-schemas.d.ts.map +1 -0
  154. package/v3/dist/adapters/a2ui/catalog/component-schemas.js +1090 -0
  155. package/v3/dist/adapters/a2ui/catalog/component-schemas.js.map +1 -0
  156. package/v3/dist/adapters/a2ui/catalog/index.d.ts +55 -0
  157. package/v3/dist/adapters/a2ui/catalog/index.d.ts.map +1 -0
  158. package/v3/dist/adapters/a2ui/catalog/index.js +100 -0
  159. package/v3/dist/adapters/a2ui/catalog/index.js.map +1 -0
  160. package/v3/dist/adapters/a2ui/catalog/qe-catalog.d.ts +456 -0
  161. package/v3/dist/adapters/a2ui/catalog/qe-catalog.d.ts.map +1 -0
  162. package/v3/dist/adapters/a2ui/catalog/qe-catalog.js +413 -0
  163. package/v3/dist/adapters/a2ui/catalog/qe-catalog.js.map +1 -0
  164. package/v3/dist/adapters/a2ui/catalog/standard-catalog.d.ts +581 -0
  165. package/v3/dist/adapters/a2ui/catalog/standard-catalog.d.ts.map +1 -0
  166. package/v3/dist/adapters/a2ui/catalog/standard-catalog.js +409 -0
  167. package/v3/dist/adapters/a2ui/catalog/standard-catalog.js.map +1 -0
  168. package/v3/dist/adapters/a2ui/data/bound-value.d.ts +252 -0
  169. package/v3/dist/adapters/a2ui/data/bound-value.d.ts.map +1 -0
  170. package/v3/dist/adapters/a2ui/data/bound-value.js +403 -0
  171. package/v3/dist/adapters/a2ui/data/bound-value.js.map +1 -0
  172. package/v3/dist/adapters/a2ui/data/index.d.ts +14 -0
  173. package/v3/dist/adapters/a2ui/data/index.d.ts.map +1 -0
  174. package/v3/dist/adapters/a2ui/data/index.js +41 -0
  175. package/v3/dist/adapters/a2ui/data/index.js.map +1 -0
  176. package/v3/dist/adapters/a2ui/data/json-pointer-resolver.d.ts +187 -0
  177. package/v3/dist/adapters/a2ui/data/json-pointer-resolver.d.ts.map +1 -0
  178. package/v3/dist/adapters/a2ui/data/json-pointer-resolver.js +425 -0
  179. package/v3/dist/adapters/a2ui/data/json-pointer-resolver.js.map +1 -0
  180. package/v3/dist/adapters/a2ui/data/reactive-store.d.ts +241 -0
  181. package/v3/dist/adapters/a2ui/data/reactive-store.d.ts.map +1 -0
  182. package/v3/dist/adapters/a2ui/data/reactive-store.js +461 -0
  183. package/v3/dist/adapters/a2ui/data/reactive-store.js.map +1 -0
  184. package/v3/dist/adapters/a2ui/index.d.ts +17 -0
  185. package/v3/dist/adapters/a2ui/index.d.ts.map +1 -0
  186. package/v3/dist/adapters/a2ui/index.js +119 -0
  187. package/v3/dist/adapters/a2ui/index.js.map +1 -0
  188. package/v3/dist/adapters/a2ui/integration/agui-sync.d.ts +259 -0
  189. package/v3/dist/adapters/a2ui/integration/agui-sync.d.ts.map +1 -0
  190. package/v3/dist/adapters/a2ui/integration/agui-sync.js +559 -0
  191. package/v3/dist/adapters/a2ui/integration/agui-sync.js.map +1 -0
  192. package/v3/dist/adapters/a2ui/integration/index.d.ts +11 -0
  193. package/v3/dist/adapters/a2ui/integration/index.d.ts.map +1 -0
  194. package/v3/dist/adapters/a2ui/integration/index.js +23 -0
  195. package/v3/dist/adapters/a2ui/integration/index.js.map +1 -0
  196. package/v3/dist/adapters/a2ui/integration/surface-state-bridge.d.ts +209 -0
  197. package/v3/dist/adapters/a2ui/integration/surface-state-bridge.d.ts.map +1 -0
  198. package/v3/dist/adapters/a2ui/integration/surface-state-bridge.js +545 -0
  199. package/v3/dist/adapters/a2ui/integration/surface-state-bridge.js.map +1 -0
  200. package/v3/dist/adapters/a2ui/renderer/component-builder.d.ts +227 -0
  201. package/v3/dist/adapters/a2ui/renderer/component-builder.d.ts.map +1 -0
  202. package/v3/dist/adapters/a2ui/renderer/component-builder.js +488 -0
  203. package/v3/dist/adapters/a2ui/renderer/component-builder.js.map +1 -0
  204. package/v3/dist/adapters/a2ui/renderer/index.d.ts +16 -0
  205. package/v3/dist/adapters/a2ui/renderer/index.d.ts.map +1 -0
  206. package/v3/dist/adapters/a2ui/renderer/index.js +50 -0
  207. package/v3/dist/adapters/a2ui/renderer/index.js.map +1 -0
  208. package/v3/dist/adapters/a2ui/renderer/message-types.d.ts +299 -0
  209. package/v3/dist/adapters/a2ui/renderer/message-types.d.ts.map +1 -0
  210. package/v3/dist/adapters/a2ui/renderer/message-types.js +187 -0
  211. package/v3/dist/adapters/a2ui/renderer/message-types.js.map +1 -0
  212. package/v3/dist/adapters/a2ui/renderer/surface-generator.d.ts +210 -0
  213. package/v3/dist/adapters/a2ui/renderer/surface-generator.d.ts.map +1 -0
  214. package/v3/dist/adapters/a2ui/renderer/surface-generator.js +586 -0
  215. package/v3/dist/adapters/a2ui/renderer/surface-generator.js.map +1 -0
  216. package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.d.ts +149 -0
  217. package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.d.ts.map +1 -0
  218. package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.js +414 -0
  219. package/v3/dist/adapters/a2ui/renderer/templates/accessibility-surface.js.map +1 -0
  220. package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.d.ts +95 -0
  221. package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.d.ts.map +1 -0
  222. package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.js +231 -0
  223. package/v3/dist/adapters/a2ui/renderer/templates/coverage-surface.js.map +1 -0
  224. package/v3/dist/adapters/a2ui/renderer/templates/index.d.ts +12 -0
  225. package/v3/dist/adapters/a2ui/renderer/templates/index.d.ts.map +1 -0
  226. package/v3/dist/adapters/a2ui/renderer/templates/index.js +16 -0
  227. package/v3/dist/adapters/a2ui/renderer/templates/index.js.map +1 -0
  228. package/v3/dist/adapters/a2ui/renderer/templates/security-surface.d.ts +121 -0
  229. package/v3/dist/adapters/a2ui/renderer/templates/security-surface.d.ts.map +1 -0
  230. package/v3/dist/adapters/a2ui/renderer/templates/security-surface.js +367 -0
  231. package/v3/dist/adapters/a2ui/renderer/templates/security-surface.js.map +1 -0
  232. package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.d.ts +104 -0
  233. package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.d.ts.map +1 -0
  234. package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.js +294 -0
  235. package/v3/dist/adapters/a2ui/renderer/templates/test-results-surface.js.map +1 -0
  236. package/v3/dist/adapters/ag-ui/backpressure-handler.d.ts +201 -0
  237. package/v3/dist/adapters/ag-ui/backpressure-handler.d.ts.map +1 -0
  238. package/v3/dist/adapters/ag-ui/backpressure-handler.js +399 -0
  239. package/v3/dist/adapters/ag-ui/backpressure-handler.js.map +1 -0
  240. package/v3/dist/adapters/ag-ui/event-adapter.d.ts +360 -0
  241. package/v3/dist/adapters/ag-ui/event-adapter.d.ts.map +1 -0
  242. package/v3/dist/adapters/ag-ui/event-adapter.js +1083 -0
  243. package/v3/dist/adapters/ag-ui/event-adapter.js.map +1 -0
  244. package/v3/dist/adapters/ag-ui/event-batcher.d.ts +242 -0
  245. package/v3/dist/adapters/ag-ui/event-batcher.d.ts.map +1 -0
  246. package/v3/dist/adapters/ag-ui/event-batcher.js +444 -0
  247. package/v3/dist/adapters/ag-ui/event-batcher.js.map +1 -0
  248. package/v3/dist/adapters/ag-ui/event-types.d.ts +450 -0
  249. package/v3/dist/adapters/ag-ui/event-types.d.ts.map +1 -0
  250. package/v3/dist/adapters/ag-ui/event-types.js +173 -0
  251. package/v3/dist/adapters/ag-ui/event-types.js.map +1 -0
  252. package/v3/dist/adapters/ag-ui/index.d.ts +17 -0
  253. package/v3/dist/adapters/ag-ui/index.d.ts.map +1 -0
  254. package/v3/dist/adapters/ag-ui/index.js +47 -0
  255. package/v3/dist/adapters/ag-ui/index.js.map +1 -0
  256. package/v3/dist/adapters/ag-ui/json-patch-utils.d.ts +136 -0
  257. package/v3/dist/adapters/ag-ui/json-patch-utils.d.ts.map +1 -0
  258. package/v3/dist/adapters/ag-ui/json-patch-utils.js +574 -0
  259. package/v3/dist/adapters/ag-ui/json-patch-utils.js.map +1 -0
  260. package/v3/dist/adapters/ag-ui/json-patch.d.ts +241 -0
  261. package/v3/dist/adapters/ag-ui/json-patch.d.ts.map +1 -0
  262. package/v3/dist/adapters/ag-ui/json-patch.js +726 -0
  263. package/v3/dist/adapters/ag-ui/json-patch.js.map +1 -0
  264. package/v3/dist/adapters/ag-ui/state-delta-cache.d.ts +218 -0
  265. package/v3/dist/adapters/ag-ui/state-delta-cache.d.ts.map +1 -0
  266. package/v3/dist/adapters/ag-ui/state-delta-cache.js +422 -0
  267. package/v3/dist/adapters/ag-ui/state-delta-cache.js.map +1 -0
  268. package/v3/dist/adapters/ag-ui/state-manager.d.ts +249 -0
  269. package/v3/dist/adapters/ag-ui/state-manager.d.ts.map +1 -0
  270. package/v3/dist/adapters/ag-ui/state-manager.js +511 -0
  271. package/v3/dist/adapters/ag-ui/state-manager.js.map +1 -0
  272. package/v3/dist/adapters/ag-ui/stream-controller.d.ts +195 -0
  273. package/v3/dist/adapters/ag-ui/stream-controller.d.ts.map +1 -0
  274. package/v3/dist/adapters/ag-ui/stream-controller.js +481 -0
  275. package/v3/dist/adapters/ag-ui/stream-controller.js.map +1 -0
  276. package/v3/dist/adapters/index.d.ts +4 -0
  277. package/v3/dist/adapters/index.d.ts.map +1 -1
  278. package/v3/dist/adapters/index.js +89 -0
  279. package/v3/dist/adapters/index.js.map +1 -1
  280. package/v3/dist/cli/bundle.js +1507 -425
  281. package/v3/dist/coordination/consensus/providers/claude-provider.js +1 -1
  282. package/v3/dist/coordination/consensus/providers/gemini-provider.js +1 -1
  283. package/v3/dist/coordination/consensus/providers/openai-provider.js +1 -1
  284. package/v3/dist/init/init-wizard.d.ts.map +1 -1
  285. package/v3/dist/init/init-wizard.js +19 -4
  286. package/v3/dist/init/init-wizard.js.map +1 -1
  287. package/v3/dist/init/migration/config-migrator.d.ts.map +1 -1
  288. package/v3/dist/init/migration/config-migrator.js +15 -1
  289. package/v3/dist/init/migration/config-migrator.js.map +1 -1
  290. package/v3/dist/init/phases/05-learning.js +1 -1
  291. package/v3/dist/init/phases/05-learning.js.map +1 -1
  292. package/v3/dist/init/self-configurator.d.ts +7 -0
  293. package/v3/dist/init/self-configurator.d.ts.map +1 -1
  294. package/v3/dist/init/self-configurator.js +23 -27
  295. package/v3/dist/init/self-configurator.js.map +1 -1
  296. package/v3/dist/integrations/ruvector/interfaces.js +1 -1
  297. package/v3/dist/integrations/ruvector/interfaces.js.map +1 -1
  298. package/v3/dist/kernel/index.d.ts +1 -1
  299. package/v3/dist/kernel/index.d.ts.map +1 -1
  300. package/v3/dist/kernel/index.js +3 -1
  301. package/v3/dist/kernel/index.js.map +1 -1
  302. package/v3/dist/kernel/plugin-loader.d.ts.map +1 -1
  303. package/v3/dist/kernel/plugin-loader.js +6 -1
  304. package/v3/dist/kernel/plugin-loader.js.map +1 -1
  305. package/v3/dist/kernel/unified-memory.d.ts +123 -0
  306. package/v3/dist/kernel/unified-memory.d.ts.map +1 -1
  307. package/v3/dist/kernel/unified-memory.js +258 -2
  308. package/v3/dist/kernel/unified-memory.js.map +1 -1
  309. package/v3/dist/learning/qe-unified-memory.js +1 -1
  310. package/v3/dist/learning/qe-unified-memory.js.map +1 -1
  311. package/v3/dist/learning/real-qe-reasoning-bank.js +2 -2
  312. package/v3/dist/learning/real-qe-reasoning-bank.js.map +1 -1
  313. package/v3/dist/learning/sqlite-persistence.d.ts +1 -1
  314. package/v3/dist/learning/sqlite-persistence.js +1 -1
  315. package/v3/dist/learning/sqlite-persistence.js.map +1 -1
  316. package/v3/dist/learning/v2-to-v3-migration.d.ts +2 -2
  317. package/v3/dist/learning/v2-to-v3-migration.d.ts.map +1 -1
  318. package/v3/dist/learning/v2-to-v3-migration.js +2 -2
  319. package/v3/dist/learning/v2-to-v3-migration.js.map +1 -1
  320. package/v3/dist/mcp/bundle.js +63075 -53304
  321. package/v3/dist/mcp/entry.d.ts +5 -0
  322. package/v3/dist/mcp/entry.d.ts.map +1 -1
  323. package/v3/dist/mcp/entry.js +36 -0
  324. package/v3/dist/mcp/entry.js.map +1 -1
  325. package/v3/dist/mcp/http-server.d.ts +95 -0
  326. package/v3/dist/mcp/http-server.d.ts.map +1 -0
  327. package/v3/dist/mcp/http-server.js +833 -0
  328. package/v3/dist/mcp/http-server.js.map +1 -0
  329. package/v3/dist/mcp/protocol-server.d.ts +6 -0
  330. package/v3/dist/mcp/protocol-server.d.ts.map +1 -1
  331. package/v3/dist/mcp/protocol-server.js +40 -0
  332. package/v3/dist/mcp/protocol-server.js.map +1 -1
  333. package/v3/dist/mcp/transport/index.d.ts +25 -3
  334. package/v3/dist/mcp/transport/index.d.ts.map +1 -1
  335. package/v3/dist/mcp/transport/index.js +22 -4
  336. package/v3/dist/mcp/transport/index.js.map +1 -1
  337. package/v3/dist/mcp/transport/sse/connection-manager.d.ts +84 -0
  338. package/v3/dist/mcp/transport/sse/connection-manager.d.ts.map +1 -0
  339. package/v3/dist/mcp/transport/sse/connection-manager.js +271 -0
  340. package/v3/dist/mcp/transport/sse/connection-manager.js.map +1 -0
  341. package/v3/dist/mcp/transport/sse/index.d.ts +10 -0
  342. package/v3/dist/mcp/transport/sse/index.d.ts.map +1 -0
  343. package/v3/dist/mcp/transport/sse/index.js +15 -0
  344. package/v3/dist/mcp/transport/sse/index.js.map +1 -0
  345. package/v3/dist/mcp/transport/sse/sse-transport.d.ts +56 -0
  346. package/v3/dist/mcp/transport/sse/sse-transport.d.ts.map +1 -0
  347. package/v3/dist/mcp/transport/sse/sse-transport.js +381 -0
  348. package/v3/dist/mcp/transport/sse/sse-transport.js.map +1 -0
  349. package/v3/dist/mcp/transport/sse/types.d.ts +237 -0
  350. package/v3/dist/mcp/transport/sse/types.d.ts.map +1 -0
  351. package/v3/dist/mcp/transport/sse/types.js +37 -0
  352. package/v3/dist/mcp/transport/sse/types.js.map +1 -0
  353. package/v3/dist/mcp/transport/websocket/connection-manager.d.ts +143 -0
  354. package/v3/dist/mcp/transport/websocket/connection-manager.d.ts.map +1 -0
  355. package/v3/dist/mcp/transport/websocket/connection-manager.js +522 -0
  356. package/v3/dist/mcp/transport/websocket/connection-manager.js.map +1 -0
  357. package/v3/dist/mcp/transport/websocket/index.d.ts +10 -0
  358. package/v3/dist/mcp/transport/websocket/index.d.ts.map +1 -0
  359. package/v3/dist/mcp/transport/websocket/index.js +19 -0
  360. package/v3/dist/mcp/transport/websocket/index.js.map +1 -0
  361. package/v3/dist/mcp/transport/websocket/types.d.ts +354 -0
  362. package/v3/dist/mcp/transport/websocket/types.d.ts.map +1 -0
  363. package/v3/dist/mcp/transport/websocket/types.js +49 -0
  364. package/v3/dist/mcp/transport/websocket/types.js.map +1 -0
  365. package/v3/dist/mcp/transport/websocket/websocket-transport.d.ts +77 -0
  366. package/v3/dist/mcp/transport/websocket/websocket-transport.d.ts.map +1 -0
  367. package/v3/dist/mcp/transport/websocket/websocket-transport.js +622 -0
  368. package/v3/dist/mcp/transport/websocket/websocket-transport.js.map +1 -0
  369. package/v3/dist/memory/crdt/convergence-tracker.d.ts +59 -0
  370. package/v3/dist/memory/crdt/convergence-tracker.d.ts.map +1 -0
  371. package/v3/dist/memory/crdt/convergence-tracker.js +325 -0
  372. package/v3/dist/memory/crdt/convergence-tracker.js.map +1 -0
  373. package/v3/dist/memory/crdt/crdt-store.d.ts +55 -0
  374. package/v3/dist/memory/crdt/crdt-store.d.ts.map +1 -0
  375. package/v3/dist/memory/crdt/crdt-store.js +582 -0
  376. package/v3/dist/memory/crdt/crdt-store.js.map +1 -0
  377. package/v3/dist/memory/crdt/g-counter.d.ts +47 -0
  378. package/v3/dist/memory/crdt/g-counter.d.ts.map +1 -0
  379. package/v3/dist/memory/crdt/g-counter.js +134 -0
  380. package/v3/dist/memory/crdt/g-counter.js.map +1 -0
  381. package/v3/dist/memory/crdt/index.d.ts +52 -0
  382. package/v3/dist/memory/crdt/index.d.ts.map +1 -0
  383. package/v3/dist/memory/crdt/index.js +66 -0
  384. package/v3/dist/memory/crdt/index.js.map +1 -0
  385. package/v3/dist/memory/crdt/lww-register.d.ts +40 -0
  386. package/v3/dist/memory/crdt/lww-register.d.ts.map +1 -0
  387. package/v3/dist/memory/crdt/lww-register.js +133 -0
  388. package/v3/dist/memory/crdt/lww-register.js.map +1 -0
  389. package/v3/dist/memory/crdt/or-set.d.ts +62 -0
  390. package/v3/dist/memory/crdt/or-set.d.ts.map +1 -0
  391. package/v3/dist/memory/crdt/or-set.js +336 -0
  392. package/v3/dist/memory/crdt/or-set.js.map +1 -0
  393. package/v3/dist/memory/crdt/pn-counter.d.ts +53 -0
  394. package/v3/dist/memory/crdt/pn-counter.d.ts.map +1 -0
  395. package/v3/dist/memory/crdt/pn-counter.js +147 -0
  396. package/v3/dist/memory/crdt/pn-counter.js.map +1 -0
  397. package/v3/dist/memory/crdt/types.d.ts +397 -0
  398. package/v3/dist/memory/crdt/types.d.ts.map +1 -0
  399. package/v3/dist/memory/crdt/types.js +12 -0
  400. package/v3/dist/memory/crdt/types.js.map +1 -0
  401. package/v3/dist/memory/index.d.ts +5 -2
  402. package/v3/dist/memory/index.d.ts.map +1 -1
  403. package/v3/dist/memory/index.js +5 -2
  404. package/v3/dist/memory/index.js.map +1 -1
  405. package/v3/dist/performance/benchmarks.d.ts +215 -0
  406. package/v3/dist/performance/benchmarks.d.ts.map +1 -0
  407. package/v3/dist/performance/benchmarks.js +516 -0
  408. package/v3/dist/performance/benchmarks.js.map +1 -0
  409. package/v3/dist/performance/ci-gates.d.ts +149 -0
  410. package/v3/dist/performance/ci-gates.d.ts.map +1 -0
  411. package/v3/dist/performance/ci-gates.js +425 -0
  412. package/v3/dist/performance/ci-gates.js.map +1 -0
  413. package/v3/dist/performance/index.d.ts +18 -0
  414. package/v3/dist/performance/index.d.ts.map +1 -0
  415. package/v3/dist/performance/index.js +26 -0
  416. package/v3/dist/performance/index.js.map +1 -0
  417. package/v3/dist/performance/optimizer.d.ts +323 -0
  418. package/v3/dist/performance/optimizer.d.ts.map +1 -0
  419. package/v3/dist/performance/optimizer.js +592 -0
  420. package/v3/dist/performance/optimizer.js.map +1 -0
  421. package/v3/dist/performance/profiler.d.ts +195 -0
  422. package/v3/dist/performance/profiler.d.ts.map +1 -0
  423. package/v3/dist/performance/profiler.js +369 -0
  424. package/v3/dist/performance/profiler.js.map +1 -0
  425. package/v3/dist/performance/run-gates.d.ts +23 -0
  426. package/v3/dist/performance/run-gates.d.ts.map +1 -0
  427. package/v3/dist/performance/run-gates.js +122 -0
  428. package/v3/dist/performance/run-gates.js.map +1 -0
  429. package/v3/dist/sync/claude-flow-bridge.d.ts +1 -1
  430. package/v3/dist/sync/claude-flow-bridge.js +1 -1
  431. package/v3/dist/sync/interfaces.d.ts +6 -0
  432. package/v3/dist/sync/interfaces.d.ts.map +1 -1
  433. package/v3/dist/sync/interfaces.js +34 -47
  434. package/v3/dist/sync/interfaces.js.map +1 -1
  435. package/v3/dist/sync/readers/sqlite-reader.d.ts +1 -1
  436. package/v3/dist/sync/readers/sqlite-reader.js +1 -1
  437. package/v3/dist/testing/index.d.ts +6 -0
  438. package/v3/dist/testing/index.d.ts.map +1 -0
  439. package/v3/dist/testing/index.js +7 -0
  440. package/v3/dist/testing/index.js.map +1 -0
  441. package/v3/dist/testing/load/agent-load-tester.d.ts +221 -0
  442. package/v3/dist/testing/load/agent-load-tester.d.ts.map +1 -0
  443. package/v3/dist/testing/load/agent-load-tester.js +566 -0
  444. package/v3/dist/testing/load/agent-load-tester.js.map +1 -0
  445. package/v3/dist/testing/load/bottleneck-analyzer.d.ts +150 -0
  446. package/v3/dist/testing/load/bottleneck-analyzer.d.ts.map +1 -0
  447. package/v3/dist/testing/load/bottleneck-analyzer.js +442 -0
  448. package/v3/dist/testing/load/bottleneck-analyzer.js.map +1 -0
  449. package/v3/dist/testing/load/index.d.ts +17 -0
  450. package/v3/dist/testing/load/index.d.ts.map +1 -0
  451. package/v3/dist/testing/load/index.js +23 -0
  452. package/v3/dist/testing/load/index.js.map +1 -0
  453. package/v3/dist/testing/load/metrics-collector.d.ts +275 -0
  454. package/v3/dist/testing/load/metrics-collector.d.ts.map +1 -0
  455. package/v3/dist/testing/load/metrics-collector.js +475 -0
  456. package/v3/dist/testing/load/metrics-collector.js.map +1 -0
  457. package/v3/package.json +5 -1
@@ -0,0 +1,453 @@
1
+ /**
2
+ * A2A Token Store
3
+ *
4
+ * In-memory token storage with TTL support for OAuth 2.0 tokens.
5
+ * Provides storage for access tokens, refresh tokens, and authorization codes.
6
+ *
7
+ * @module adapters/a2a/auth/token-store
8
+ */
9
+ /**
10
+ * Default token store configuration
11
+ */
12
+ export const DEFAULT_TOKEN_STORE_CONFIG = {
13
+ cleanupInterval: 60000,
14
+ maxTokens: 100000,
15
+ enableAutoCleanup: true,
16
+ };
17
+ // ============================================================================
18
+ // Token Store Implementation
19
+ // ============================================================================
20
+ /**
21
+ * In-memory token store with TTL support
22
+ *
23
+ * Provides storage for OAuth 2.0 tokens with automatic cleanup
24
+ * of expired tokens.
25
+ */
26
+ export class TokenStore {
27
+ config;
28
+ accessTokens = new Map();
29
+ refreshTokens = new Map();
30
+ authorizationCodes = new Map();
31
+ revokedTokens = new Set();
32
+ cleanupTimer;
33
+ lastCleanup = null;
34
+ totalExpiredCleaned = 0;
35
+ constructor(config = {}) {
36
+ this.config = { ...DEFAULT_TOKEN_STORE_CONFIG, ...config };
37
+ if (this.config.enableAutoCleanup && this.config.cleanupInterval > 0) {
38
+ this.startCleanupTimer();
39
+ }
40
+ }
41
+ // ============================================================================
42
+ // Access Token Operations
43
+ // ============================================================================
44
+ /**
45
+ * Store an access token
46
+ *
47
+ * @param token - The token string (JWT)
48
+ * @param claims - The token claims
49
+ */
50
+ storeAccessToken(token, claims) {
51
+ this.checkCapacity();
52
+ const fullClaims = {
53
+ ...claims,
54
+ tokenType: 'access',
55
+ };
56
+ this.accessTokens.set(token, fullClaims);
57
+ }
58
+ /**
59
+ * Get access token claims
60
+ *
61
+ * @param token - The token string
62
+ * @returns The token claims or null if not found/expired/revoked
63
+ */
64
+ getAccessTokenClaims(token) {
65
+ // Check if revoked
66
+ if (this.isRevoked(token)) {
67
+ return null;
68
+ }
69
+ const claims = this.accessTokens.get(token);
70
+ if (!claims) {
71
+ return null;
72
+ }
73
+ // Check if expired
74
+ if (this.isExpired(claims.expiresAt)) {
75
+ this.accessTokens.delete(token);
76
+ return null;
77
+ }
78
+ return claims;
79
+ }
80
+ /**
81
+ * Check if an access token is valid
82
+ *
83
+ * @param token - The token string
84
+ * @returns True if the token is valid
85
+ */
86
+ isAccessTokenValid(token) {
87
+ return this.getAccessTokenClaims(token) !== null;
88
+ }
89
+ // ============================================================================
90
+ // Refresh Token Operations
91
+ // ============================================================================
92
+ /**
93
+ * Store a refresh token
94
+ *
95
+ * @param token - The token string
96
+ * @param claims - The token claims
97
+ */
98
+ storeRefreshToken(token, claims) {
99
+ this.checkCapacity();
100
+ const fullClaims = {
101
+ ...claims,
102
+ tokenType: 'refresh',
103
+ };
104
+ this.refreshTokens.set(token, fullClaims);
105
+ }
106
+ /**
107
+ * Get refresh token claims
108
+ *
109
+ * @param token - The token string
110
+ * @returns The token claims or null if not found/expired/revoked
111
+ */
112
+ getRefreshTokenClaims(token) {
113
+ if (this.isRevoked(token)) {
114
+ return null;
115
+ }
116
+ const claims = this.refreshTokens.get(token);
117
+ if (!claims) {
118
+ return null;
119
+ }
120
+ if (this.isExpired(claims.expiresAt)) {
121
+ this.refreshTokens.delete(token);
122
+ return null;
123
+ }
124
+ return claims;
125
+ }
126
+ /**
127
+ * Increment the use count for a refresh token
128
+ *
129
+ * @param token - The refresh token
130
+ * @returns The updated claims or null if not found
131
+ */
132
+ incrementRefreshTokenUseCount(token) {
133
+ const claims = this.refreshTokens.get(token);
134
+ if (!claims) {
135
+ return null;
136
+ }
137
+ const updatedClaims = {
138
+ ...claims,
139
+ useCount: claims.useCount + 1,
140
+ };
141
+ this.refreshTokens.set(token, updatedClaims);
142
+ return updatedClaims;
143
+ }
144
+ // ============================================================================
145
+ // Authorization Code Operations
146
+ // ============================================================================
147
+ /**
148
+ * Store an authorization code
149
+ *
150
+ * @param code - The authorization code
151
+ * @param claims - The code claims
152
+ */
153
+ storeAuthorizationCode(code, claims) {
154
+ this.authorizationCodes.set(code, {
155
+ ...claims,
156
+ used: false,
157
+ });
158
+ }
159
+ /**
160
+ * Get authorization code claims
161
+ *
162
+ * @param code - The authorization code
163
+ * @returns The code claims or null if not found/expired/used
164
+ */
165
+ getAuthorizationCodeClaims(code) {
166
+ const claims = this.authorizationCodes.get(code);
167
+ if (!claims) {
168
+ return null;
169
+ }
170
+ // Check if expired
171
+ if (this.isExpired(claims.expiresAt)) {
172
+ this.authorizationCodes.delete(code);
173
+ return null;
174
+ }
175
+ // Check if already used
176
+ if (claims.used) {
177
+ return null;
178
+ }
179
+ return claims;
180
+ }
181
+ /**
182
+ * Mark an authorization code as used
183
+ *
184
+ * @param code - The authorization code
185
+ * @returns True if the code was marked as used
186
+ */
187
+ markAuthorizationCodeUsed(code) {
188
+ const claims = this.authorizationCodes.get(code);
189
+ if (!claims || claims.used) {
190
+ return false;
191
+ }
192
+ claims.used = true;
193
+ return true;
194
+ }
195
+ /**
196
+ * Consume an authorization code (get and mark as used)
197
+ *
198
+ * @param code - The authorization code
199
+ * @returns The code claims or null if not valid
200
+ */
201
+ consumeAuthorizationCode(code) {
202
+ const claims = this.getAuthorizationCodeClaims(code);
203
+ if (!claims) {
204
+ return null;
205
+ }
206
+ this.markAuthorizationCodeUsed(code);
207
+ return claims;
208
+ }
209
+ // ============================================================================
210
+ // Token Revocation
211
+ // ============================================================================
212
+ /**
213
+ * Revoke a token
214
+ *
215
+ * @param token - The token string
216
+ * @returns True if the token was revoked
217
+ */
218
+ revokeToken(token) {
219
+ // Add to revocation list
220
+ this.revokedTokens.add(token);
221
+ // Remove from active stores
222
+ const wasAccessToken = this.accessTokens.delete(token);
223
+ const wasRefreshToken = this.refreshTokens.delete(token);
224
+ return wasAccessToken || wasRefreshToken;
225
+ }
226
+ /**
227
+ * Revoke all tokens for a client
228
+ *
229
+ * @param clientId - The client ID
230
+ * @returns Number of tokens revoked
231
+ */
232
+ revokeTokensByClient(clientId) {
233
+ let count = 0;
234
+ // Revoke access tokens
235
+ for (const [token, claims] of this.accessTokens) {
236
+ if (claims.clientId === clientId) {
237
+ this.revokeToken(token);
238
+ count++;
239
+ }
240
+ }
241
+ // Revoke refresh tokens
242
+ for (const [token, claims] of this.refreshTokens) {
243
+ if (claims.clientId === clientId) {
244
+ this.revokeToken(token);
245
+ count++;
246
+ }
247
+ }
248
+ return count;
249
+ }
250
+ /**
251
+ * Check if a token is revoked
252
+ *
253
+ * @param token - The token string
254
+ * @returns True if the token is revoked
255
+ */
256
+ isRevoked(token) {
257
+ return this.revokedTokens.has(token);
258
+ }
259
+ // ============================================================================
260
+ // Generic Token Operations
261
+ // ============================================================================
262
+ /**
263
+ * Get claims for any token type
264
+ *
265
+ * @param token - The token string
266
+ * @returns The token claims or null
267
+ */
268
+ getTokenClaims(token) {
269
+ const accessClaims = this.getAccessTokenClaims(token);
270
+ if (accessClaims) {
271
+ return accessClaims;
272
+ }
273
+ return this.getRefreshTokenClaims(token);
274
+ }
275
+ /**
276
+ * Check if a token exists and is valid
277
+ *
278
+ * @param token - The token string
279
+ * @returns True if the token is valid
280
+ */
281
+ isTokenValid(token) {
282
+ return this.getTokenClaims(token) !== null;
283
+ }
284
+ // ============================================================================
285
+ // Cleanup Operations
286
+ // ============================================================================
287
+ /**
288
+ * Clean up expired tokens
289
+ *
290
+ * @returns Number of tokens cleaned up
291
+ */
292
+ cleanup() {
293
+ const now = Math.floor(Date.now() / 1000);
294
+ let cleaned = 0;
295
+ // Clean access tokens
296
+ for (const [token, claims] of this.accessTokens) {
297
+ if (this.isExpired(claims.expiresAt)) {
298
+ this.accessTokens.delete(token);
299
+ cleaned++;
300
+ }
301
+ }
302
+ // Clean refresh tokens
303
+ for (const [token, claims] of this.refreshTokens) {
304
+ if (this.isExpired(claims.expiresAt)) {
305
+ this.refreshTokens.delete(token);
306
+ cleaned++;
307
+ }
308
+ }
309
+ // Clean authorization codes
310
+ for (const [code, claims] of this.authorizationCodes) {
311
+ if (this.isExpired(claims.expiresAt)) {
312
+ this.authorizationCodes.delete(code);
313
+ cleaned++;
314
+ }
315
+ }
316
+ // Clean old revoked tokens (keep for 24 hours)
317
+ const dayAgo = now - 86400;
318
+ for (const token of this.revokedTokens) {
319
+ // We can't know when it was revoked, so we check if there are too many
320
+ if (this.revokedTokens.size > 10000) {
321
+ // Just remove some to prevent unbounded growth
322
+ this.revokedTokens.delete(token);
323
+ cleaned++;
324
+ }
325
+ }
326
+ this.lastCleanup = now;
327
+ this.totalExpiredCleaned += cleaned;
328
+ return cleaned;
329
+ }
330
+ /**
331
+ * Start the automatic cleanup timer
332
+ */
333
+ startCleanupTimer() {
334
+ this.cleanupTimer = setInterval(() => {
335
+ this.cleanup();
336
+ }, this.config.cleanupInterval);
337
+ // Don't prevent process exit
338
+ if (typeof this.cleanupTimer.unref === 'function') {
339
+ this.cleanupTimer.unref();
340
+ }
341
+ }
342
+ /**
343
+ * Stop the automatic cleanup timer
344
+ */
345
+ stopCleanupTimer() {
346
+ if (this.cleanupTimer) {
347
+ clearInterval(this.cleanupTimer);
348
+ this.cleanupTimer = undefined;
349
+ }
350
+ }
351
+ /**
352
+ * Check capacity and evict if necessary
353
+ */
354
+ checkCapacity() {
355
+ if (this.config.maxTokens <= 0) {
356
+ return;
357
+ }
358
+ const totalTokens = this.accessTokens.size + this.refreshTokens.size;
359
+ if (totalTokens >= this.config.maxTokens) {
360
+ // Run cleanup first
361
+ this.cleanup();
362
+ // If still over capacity, evict oldest tokens
363
+ const stillOver = this.accessTokens.size + this.refreshTokens.size - this.config.maxTokens;
364
+ if (stillOver > 0) {
365
+ this.evictOldestTokens(stillOver + 100); // Evict some extra
366
+ }
367
+ }
368
+ }
369
+ /**
370
+ * Evict the oldest tokens
371
+ *
372
+ * @param count - Number of tokens to evict
373
+ */
374
+ evictOldestTokens(count) {
375
+ // Get all tokens sorted by issuedAt
376
+ const allTokens = [];
377
+ for (const [token, claims] of this.accessTokens) {
378
+ allTokens.push({ token, issuedAt: claims.issuedAt, type: 'access' });
379
+ }
380
+ for (const [token, claims] of this.refreshTokens) {
381
+ allTokens.push({ token, issuedAt: claims.issuedAt, type: 'refresh' });
382
+ }
383
+ allTokens.sort((a, b) => a.issuedAt - b.issuedAt);
384
+ // Evict oldest
385
+ const toEvict = allTokens.slice(0, count);
386
+ for (const { token, type } of toEvict) {
387
+ if (type === 'access') {
388
+ this.accessTokens.delete(token);
389
+ }
390
+ else {
391
+ this.refreshTokens.delete(token);
392
+ }
393
+ }
394
+ }
395
+ /**
396
+ * Check if a timestamp has expired
397
+ */
398
+ isExpired(expiresAt) {
399
+ const now = Math.floor(Date.now() / 1000);
400
+ return expiresAt <= now;
401
+ }
402
+ // ============================================================================
403
+ // Statistics and Management
404
+ // ============================================================================
405
+ /**
406
+ * Get store statistics
407
+ */
408
+ getStats() {
409
+ return {
410
+ accessTokenCount: this.accessTokens.size,
411
+ refreshTokenCount: this.refreshTokens.size,
412
+ authCodeCount: this.authorizationCodes.size,
413
+ revokedTokenCount: this.revokedTokens.size,
414
+ lastCleanup: this.lastCleanup,
415
+ totalExpiredCleaned: this.totalExpiredCleaned,
416
+ };
417
+ }
418
+ /**
419
+ * Clear all tokens
420
+ */
421
+ clear() {
422
+ this.accessTokens.clear();
423
+ this.refreshTokens.clear();
424
+ this.authorizationCodes.clear();
425
+ this.revokedTokens.clear();
426
+ }
427
+ /**
428
+ * Destroy the store
429
+ */
430
+ destroy() {
431
+ this.stopCleanupTimer();
432
+ this.clear();
433
+ }
434
+ /**
435
+ * Get the total number of tokens
436
+ */
437
+ get size() {
438
+ return this.accessTokens.size + this.refreshTokens.size;
439
+ }
440
+ }
441
+ // ============================================================================
442
+ // Factory Function
443
+ // ============================================================================
444
+ /**
445
+ * Create a new TokenStore instance
446
+ *
447
+ * @param config - Store configuration
448
+ * @returns A new TokenStore
449
+ */
450
+ export function createTokenStore(config = {}) {
451
+ return new TokenStore(config);
452
+ }
453
+ //# sourceMappingURL=token-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token-store.js","sourceRoot":"","sources":["../../../../src/adapters/a2a/auth/token-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,226 @@
1
+ /**
2
+ * A2A Agent Health Checker
3
+ *
4
+ * Provides health checking functionality for registered agents.
5
+ * Supports individual and bulk health checks with configurable intervals.
6
+ *
7
+ * @module adapters/a2a/discovery/agent-health
8
+ */
9
+ import { EventEmitter } from 'events';
10
+ import { QEAgentCard } from '../agent-cards/schema.js';
11
+ /**
12
+ * Agent health status levels
13
+ */
14
+ export type HealthStatus = 'healthy' | 'degraded' | 'unavailable' | 'unknown';
15
+ /**
16
+ * Health check result for an individual agent
17
+ */
18
+ export interface AgentHealthStatus {
19
+ /** Agent identifier */
20
+ readonly agentId: string;
21
+ /** Current health status */
22
+ readonly status: HealthStatus;
23
+ /** Timestamp of the last health check */
24
+ readonly lastCheck: Date;
25
+ /** Response time in milliseconds (if available) */
26
+ readonly responseTime?: number;
27
+ /** Consecutive error count */
28
+ readonly errorCount: number;
29
+ /** Consecutive success count */
30
+ readonly successCount: number;
31
+ /** Error message (if unhealthy) */
32
+ readonly errorMessage?: string;
33
+ /** Additional health details */
34
+ readonly details?: Record<string, unknown>;
35
+ }
36
+ /**
37
+ * Health check configuration
38
+ */
39
+ export interface HealthCheckConfig {
40
+ /** Timeout for health check requests in milliseconds */
41
+ readonly timeoutMs?: number;
42
+ /** Number of consecutive failures before marking as unhealthy */
43
+ readonly failureThreshold?: number;
44
+ /** Number of consecutive successes to recover from unhealthy */
45
+ readonly recoveryThreshold?: number;
46
+ /** Response time threshold for degraded status (ms) */
47
+ readonly degradedThresholdMs?: number;
48
+ /** Custom health check function */
49
+ readonly checkFn?: (agentId: string, card: QEAgentCard) => Promise<HealthCheckResult>;
50
+ }
51
+ /**
52
+ * Default health check configuration
53
+ */
54
+ export declare const DEFAULT_HEALTH_CHECK_CONFIG: Required<Omit<HealthCheckConfig, 'checkFn'>>;
55
+ /**
56
+ * Result from a health check attempt
57
+ */
58
+ export interface HealthCheckResult {
59
+ /** Whether the check was successful */
60
+ readonly success: boolean;
61
+ /** Response time in milliseconds */
62
+ readonly responseTime?: number;
63
+ /** Error if check failed */
64
+ readonly error?: Error;
65
+ /** Additional details */
66
+ readonly details?: Record<string, unknown>;
67
+ }
68
+ /**
69
+ * Periodic check configuration
70
+ */
71
+ export interface PeriodicCheckConfig {
72
+ /** Interval between checks in milliseconds */
73
+ readonly intervalMs: number;
74
+ /** Whether to check all agents or only previously unhealthy ones */
75
+ readonly checkOnlyUnhealthy?: boolean;
76
+ /** Callback for status changes */
77
+ readonly onStatusChange?: (agentId: string, oldStatus: HealthStatus, newStatus: HealthStatus) => void;
78
+ }
79
+ /**
80
+ * Health summary statistics
81
+ */
82
+ export interface HealthSummary {
83
+ /** Total number of agents */
84
+ readonly total: number;
85
+ /** Number of healthy agents */
86
+ readonly healthy: number;
87
+ /** Number of degraded agents */
88
+ readonly degraded: number;
89
+ /** Number of unavailable agents */
90
+ readonly unavailable: number;
91
+ /** Number of unknown status agents */
92
+ readonly unknown: number;
93
+ /** Overall health percentage (0-100) */
94
+ readonly healthPercentage: number;
95
+ /** Last summary calculation time */
96
+ readonly calculatedAt: Date;
97
+ }
98
+ /**
99
+ * Event map for AgentHealthChecker
100
+ */
101
+ export interface HealthCheckerEvents {
102
+ 'status-change': (agentId: string, oldStatus: HealthStatus, newStatus: HealthStatus) => void;
103
+ 'check-complete': (agentId: string, result: AgentHealthStatus) => void;
104
+ 'check-error': (agentId: string, error: Error) => void;
105
+ 'all-checks-complete': (summary: HealthSummary) => void;
106
+ }
107
+ /**
108
+ * Agent Health Checker
109
+ *
110
+ * Monitors the health of registered agents through periodic or on-demand checks.
111
+ * Supports configurable thresholds for failure detection and recovery.
112
+ */
113
+ export declare class AgentHealthChecker extends EventEmitter {
114
+ private readonly config;
115
+ private readonly healthStates;
116
+ private readonly agentCards;
117
+ private periodicCheckTimer;
118
+ private periodicConfig;
119
+ constructor(agentCards: Map<string, QEAgentCard>, config?: HealthCheckConfig);
120
+ /**
121
+ * Check the health of a specific agent
122
+ */
123
+ checkAgent(agentId: string): Promise<AgentHealthStatus>;
124
+ /**
125
+ * Check the health of all registered agents
126
+ */
127
+ checkAll(): Promise<Map<string, AgentHealthStatus>>;
128
+ /**
129
+ * Start periodic health checks
130
+ */
131
+ startPeriodicChecks(config: PeriodicCheckConfig): void;
132
+ /**
133
+ * Stop periodic health checks
134
+ */
135
+ stopPeriodicChecks(): void;
136
+ /**
137
+ * Check if periodic checks are running
138
+ */
139
+ isPeriodicCheckRunning(): boolean;
140
+ /**
141
+ * Get list of healthy agent IDs
142
+ */
143
+ getHealthyAgents(): string[];
144
+ /**
145
+ * Get list of unhealthy agent IDs (degraded or unavailable)
146
+ */
147
+ getUnhealthyAgents(): string[];
148
+ /**
149
+ * Get health status for a specific agent
150
+ */
151
+ getStatus(agentId: string): AgentHealthStatus | null;
152
+ /**
153
+ * Get all health statuses
154
+ */
155
+ getAllStatuses(): Map<string, AgentHealthStatus>;
156
+ /**
157
+ * Get health summary
158
+ */
159
+ getSummary(): HealthSummary;
160
+ /**
161
+ * Reset health state for an agent
162
+ */
163
+ resetAgent(agentId: string): void;
164
+ /**
165
+ * Reset all health states
166
+ */
167
+ resetAll(): void;
168
+ /**
169
+ * Update the agent cards reference (e.g., after hot reload)
170
+ */
171
+ updateAgentCards(cards: Map<string, QEAgentCard>): void;
172
+ /**
173
+ * Perform the actual health check
174
+ */
175
+ private performHealthCheck;
176
+ /**
177
+ * Update health state based on check result
178
+ */
179
+ private updateHealthState;
180
+ /**
181
+ * Handle a check error
182
+ */
183
+ private handleCheckError;
184
+ /**
185
+ * Convert state to status
186
+ */
187
+ private stateToStatus;
188
+ /**
189
+ * Create an unknown status
190
+ */
191
+ private createUnknownStatus;
192
+ /**
193
+ * Calculate health summary
194
+ */
195
+ private calculateSummary;
196
+ /**
197
+ * Run periodic check
198
+ */
199
+ private runPeriodicCheck;
200
+ }
201
+ /**
202
+ * Create an Agent Health Checker instance
203
+ *
204
+ * @param agentCards - Map of agent IDs to their cards
205
+ * @param config - Health check configuration
206
+ * @returns Agent health checker instance
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * const healthChecker = createAgentHealthChecker(agentCards, {
211
+ * timeoutMs: 5000,
212
+ * failureThreshold: 3,
213
+ * });
214
+ *
215
+ * // Check individual agent
216
+ * const status = await healthChecker.checkAgent('qe-test-architect');
217
+ *
218
+ * // Start periodic checks
219
+ * healthChecker.startPeriodicChecks({ intervalMs: 30000 });
220
+ *
221
+ * // Get healthy agents
222
+ * const healthyAgents = healthChecker.getHealthyAgents();
223
+ * ```
224
+ */
225
+ export declare function createAgentHealthChecker(agentCards: Map<string, QEAgentCard>, config?: HealthCheckConfig): AgentHealthChecker;
226
+ //# sourceMappingURL=agent-health.d.ts.map