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,1083 @@
1
+ /**
2
+ * AG-UI Event Adapter
3
+ *
4
+ * Maps AQE v3 events to AG-UI Protocol 1.0 event taxonomy.
5
+ * Supports bidirectional event ID mapping and multi-agent scenarios.
6
+ *
7
+ * @module adapters/ag-ui/event-adapter
8
+ */
9
+ import { EventEmitter } from 'events';
10
+ import { v4 as uuidv4 } from 'uuid';
11
+ import { isAQEToolProgress, isAQEToolResult, isAQEAgentStarted, isAQEAgentCompleted, isAQEAgentError, isAQEDomainEvent, } from './event-types.js';
12
+ import { createEventBatcher, } from './event-batcher.js';
13
+ /**
14
+ * Default configuration values
15
+ */
16
+ const DEFAULT_CONFIG = {
17
+ defaultThreadId: 'default',
18
+ emitRawForUnknown: true,
19
+ trackMessageState: true,
20
+ trackActivityState: true,
21
+ eventIdGenerator: () => uuidv4(),
22
+ timestampGenerator: () => new Date().toISOString(),
23
+ validateEvents: true,
24
+ maxBufferSize: 1000,
25
+ enableBatching: true,
26
+ batcherConfig: {},
27
+ };
28
+ // ============================================================================
29
+ // Event Adapter Implementation
30
+ // ============================================================================
31
+ /**
32
+ * AG-UI Event Adapter
33
+ *
34
+ * Adapts AQE v3 events to AG-UI Protocol 1.0 event format.
35
+ * Emits events via EventEmitter pattern for streaming support.
36
+ */
37
+ export class EventAdapter extends EventEmitter {
38
+ config;
39
+ // ID Mapping (bidirectional)
40
+ aqeToAgui = new Map();
41
+ aguiToAqe = new Map();
42
+ idMappings = [];
43
+ // Run tracking
44
+ activeRuns = new Map();
45
+ currentRunId = null;
46
+ // Message tracking
47
+ messageStates = new Map();
48
+ // Tool call tracking
49
+ toolCallStates = new Map();
50
+ // Activity tracking
51
+ activities = [];
52
+ // Event buffer for streaming
53
+ eventBuffer = [];
54
+ // Step progress tracking (for ToolProgress -> STEP events)
55
+ stepProgress = new Map();
56
+ // Event batcher for reduced network overhead
57
+ eventBatcher;
58
+ constructor(config = {}) {
59
+ super();
60
+ this.config = { ...DEFAULT_CONFIG, ...config };
61
+ // Initialize event batcher for batched event emission
62
+ if (this.config.enableBatching) {
63
+ this.eventBatcher = createEventBatcher({
64
+ ...this.config.batcherConfig,
65
+ onFlush: (batch) => this.handleBatchFlush(batch),
66
+ });
67
+ // Forward batcher events
68
+ this.eventBatcher.on('batch', (batch) => {
69
+ this.emit('batch', batch);
70
+ });
71
+ this.eventBatcher.on('single', (event) => {
72
+ this.emit('single', event);
73
+ });
74
+ }
75
+ else {
76
+ this.eventBatcher = null;
77
+ }
78
+ }
79
+ /**
80
+ * Handle batch flush - emit batch to consumers
81
+ */
82
+ handleBatchFlush(batch) {
83
+ // Emit the entire batch for consumers that support batching
84
+ this.emit('batchFlush', batch);
85
+ // Also emit individual events for backward compatibility
86
+ for (const event of batch.events) {
87
+ this.emit('event', event);
88
+ this.emit(event.type, event);
89
+ }
90
+ }
91
+ // ============================================================================
92
+ // Main Adaptation Method
93
+ // ============================================================================
94
+ /**
95
+ * Adapt an AQE event to AG-UI events
96
+ *
97
+ * @param event - Source AQE event
98
+ * @returns Array of AG-UI events (may be empty or multiple)
99
+ */
100
+ adapt(event) {
101
+ const events = [];
102
+ try {
103
+ if (isAQEToolProgress(event)) {
104
+ events.push(...this.adaptToolProgress(event));
105
+ }
106
+ else if (isAQEToolResult(event)) {
107
+ events.push(...this.adaptToolResult(event));
108
+ }
109
+ else if (isAQEAgentStarted(event)) {
110
+ events.push(...this.adaptAgentStarted(event));
111
+ }
112
+ else if (isAQEAgentCompleted(event)) {
113
+ events.push(...this.adaptAgentCompleted(event));
114
+ }
115
+ else if (isAQEAgentError(event)) {
116
+ events.push(...this.adaptAgentError(event));
117
+ }
118
+ else if (isAQEDomainEvent(event)) {
119
+ events.push(...this.adaptDomainEvent(event));
120
+ }
121
+ else if (this.config.emitRawForUnknown) {
122
+ events.push(this.createRawEvent(event));
123
+ }
124
+ // Validate and emit events
125
+ for (const aguiEvent of events) {
126
+ if (this.config.validateEvents) {
127
+ this.validateEvent(aguiEvent);
128
+ }
129
+ this.emitEvent(aguiEvent);
130
+ this.bufferEvent(aguiEvent);
131
+ }
132
+ }
133
+ catch (error) {
134
+ this.emit('error', error);
135
+ }
136
+ return events;
137
+ }
138
+ // ============================================================================
139
+ // Adaptation Methods by Event Type
140
+ // ============================================================================
141
+ /**
142
+ * Adapt ToolProgress to STEP_STARTED / TEXT_MESSAGE_CONTENT
143
+ */
144
+ adaptToolProgress(event) {
145
+ const events = [];
146
+ const runId = this.currentRunId ?? this.createOrGetRunId();
147
+ const stepId = event.stepId ?? this.generateId();
148
+ // Check if this is a new step or continuation
149
+ const existingProgress = this.stepProgress.get(stepId);
150
+ const isNewStep = existingProgress === undefined;
151
+ if (isNewStep) {
152
+ // Emit STEP_STARTED for new steps
153
+ const stepStarted = {
154
+ type: 'STEP_STARTED',
155
+ eventId: this.generateEventId(),
156
+ timestamp: this.generateTimestamp(),
157
+ runId,
158
+ stepId,
159
+ name: event.toolName ?? 'Processing',
160
+ metadata: {
161
+ initialProgress: event.percent,
162
+ message: event.message,
163
+ },
164
+ };
165
+ events.push(stepStarted);
166
+ // Track step in active run
167
+ const runContext = this.activeRuns.get(runId);
168
+ if (runContext) {
169
+ runContext.activeSteps.add(stepId);
170
+ }
171
+ }
172
+ // Update progress tracking
173
+ this.stepProgress.set(stepId, event.percent);
174
+ // Emit TEXT_MESSAGE_CONTENT for progress updates
175
+ const messageId = this.getOrCreateMessageId(stepId);
176
+ const contentEvent = {
177
+ type: 'TEXT_MESSAGE_CONTENT',
178
+ eventId: this.generateEventId(),
179
+ timestamp: this.generateTimestamp(),
180
+ messageId,
181
+ delta: event.message,
182
+ };
183
+ events.push(contentEvent);
184
+ // Emit STEP_FINISHED if 100% complete
185
+ if (event.percent >= 100) {
186
+ const stepFinished = {
187
+ type: 'STEP_FINISHED',
188
+ eventId: this.generateEventId(),
189
+ timestamp: this.generateTimestamp(),
190
+ runId,
191
+ stepId,
192
+ result: { message: event.message, percent: event.percent },
193
+ };
194
+ events.push(stepFinished);
195
+ // Clean up tracking
196
+ this.stepProgress.delete(stepId);
197
+ const runContext = this.activeRuns.get(runId);
198
+ if (runContext) {
199
+ runContext.activeSteps.delete(stepId);
200
+ }
201
+ }
202
+ return events;
203
+ }
204
+ /**
205
+ * Adapt ToolResult to TOOL_CALL_RESULT
206
+ */
207
+ adaptToolResult(event) {
208
+ const events = [];
209
+ const toolCallId = event.metadata?.requestId ?? this.generateId();
210
+ const messageId = this.generateId();
211
+ // Create TOOL_CALL_RESULT
212
+ const resultEvent = {
213
+ type: 'TOOL_CALL_RESULT',
214
+ eventId: this.generateEventId(),
215
+ timestamp: this.generateTimestamp(),
216
+ runId: this.currentRunId ?? undefined,
217
+ toolCallId,
218
+ messageId,
219
+ content: JSON.stringify(event.data ?? {}),
220
+ success: event.success,
221
+ error: event.error,
222
+ };
223
+ events.push(resultEvent);
224
+ // Update tool call state
225
+ const toolCallState = this.toolCallStates.get(toolCallId);
226
+ if (toolCallState) {
227
+ toolCallState.complete = true;
228
+ toolCallState.result = resultEvent.content;
229
+ }
230
+ // Store ID mapping
231
+ if (event.metadata?.requestId) {
232
+ this.storeIdMapping(event.metadata.requestId, toolCallId, 'tool_call');
233
+ }
234
+ return events;
235
+ }
236
+ /**
237
+ * Adapt AgentStarted to RUN_STARTED
238
+ */
239
+ adaptAgentStarted(event) {
240
+ const runId = this.generateId();
241
+ const threadId = this.config.defaultThreadId;
242
+ // Create run context
243
+ const runContext = {
244
+ runId,
245
+ threadId,
246
+ startedAt: event.timestamp,
247
+ agentId: event.agentId,
248
+ domain: event.domain,
249
+ activeSteps: new Set(),
250
+ activeMessages: new Set(),
251
+ activeToolCalls: new Set(),
252
+ };
253
+ this.activeRuns.set(runId, runContext);
254
+ this.currentRunId = runId;
255
+ // Store ID mapping
256
+ this.storeIdMapping(event.agentId, runId, 'run');
257
+ // Create RUN_STARTED event
258
+ const runStarted = {
259
+ type: 'RUN_STARTED',
260
+ eventId: this.generateEventId(),
261
+ timestamp: this.generateTimestamp(),
262
+ threadId,
263
+ runId,
264
+ input: event.task,
265
+ metadata: {
266
+ agentId: event.agentId,
267
+ domain: event.domain,
268
+ },
269
+ };
270
+ return [runStarted];
271
+ }
272
+ /**
273
+ * Adapt AgentCompleted to RUN_FINISHED
274
+ */
275
+ adaptAgentCompleted(event) {
276
+ const runId = this.getAguiId(event.agentId) ?? this.currentRunId ?? this.generateId();
277
+ // Create RUN_FINISHED event
278
+ const runFinished = {
279
+ type: 'RUN_FINISHED',
280
+ eventId: this.generateEventId(),
281
+ timestamp: this.generateTimestamp(),
282
+ runId,
283
+ outcome: 'success',
284
+ result: event.result,
285
+ };
286
+ // Clean up run context
287
+ this.activeRuns.delete(runId);
288
+ if (this.currentRunId === runId) {
289
+ this.currentRunId = null;
290
+ }
291
+ return [runFinished];
292
+ }
293
+ /**
294
+ * Adapt AgentError to RUN_ERROR
295
+ */
296
+ adaptAgentError(event) {
297
+ const runId = this.getAguiId(event.agentId) ?? this.currentRunId ?? this.generateId();
298
+ // Create RUN_ERROR event
299
+ const runError = {
300
+ type: 'RUN_ERROR',
301
+ eventId: this.generateEventId(),
302
+ timestamp: this.generateTimestamp(),
303
+ runId,
304
+ message: event.error,
305
+ code: event.code ?? 'AGENT_ERROR',
306
+ recoverable: event.recoverable,
307
+ };
308
+ // Clean up run context
309
+ this.activeRuns.delete(runId);
310
+ if (this.currentRunId === runId) {
311
+ this.currentRunId = null;
312
+ }
313
+ return [runError];
314
+ }
315
+ /**
316
+ * Adapt DomainEvent to appropriate AG-UI events
317
+ */
318
+ adaptDomainEvent(event) {
319
+ const events = [];
320
+ // Map domain event types to AG-UI events
321
+ const eventType = event.type.toLowerCase();
322
+ if (eventType.includes('started') || eventType.includes('running')) {
323
+ // Map to STEP_STARTED
324
+ const stepId = event.id;
325
+ const stepStarted = {
326
+ type: 'STEP_STARTED',
327
+ eventId: this.generateEventId(),
328
+ timestamp: this.generateTimestamp(),
329
+ runId: this.currentRunId ?? this.createOrGetRunId(),
330
+ stepId,
331
+ name: event.type,
332
+ metadata: event.payload,
333
+ };
334
+ events.push(stepStarted);
335
+ this.storeIdMapping(event.id, stepId, 'step');
336
+ }
337
+ else if (eventType.includes('completed') || eventType.includes('finished')) {
338
+ // Map to STEP_FINISHED
339
+ const stepId = this.getAguiId(event.id) ?? event.id;
340
+ const stepFinished = {
341
+ type: 'STEP_FINISHED',
342
+ eventId: this.generateEventId(),
343
+ timestamp: this.generateTimestamp(),
344
+ runId: this.currentRunId ?? this.config.defaultThreadId,
345
+ stepId,
346
+ result: event.payload,
347
+ };
348
+ events.push(stepFinished);
349
+ }
350
+ else if (eventType.includes('error') || eventType.includes('failed')) {
351
+ // Map to RUN_ERROR if no active run, otherwise STEP_FINISHED with error
352
+ if (this.currentRunId) {
353
+ const stepId = this.getAguiId(event.id) ?? event.id;
354
+ const stepFinished = {
355
+ type: 'STEP_FINISHED',
356
+ eventId: this.generateEventId(),
357
+ timestamp: this.generateTimestamp(),
358
+ runId: this.currentRunId,
359
+ stepId,
360
+ result: { error: event.payload },
361
+ };
362
+ events.push(stepFinished);
363
+ }
364
+ }
365
+ else {
366
+ // Default: emit as CUSTOM event
367
+ const customEvent = {
368
+ type: 'CUSTOM',
369
+ eventId: this.generateEventId(),
370
+ timestamp: this.generateTimestamp(),
371
+ runId: this.currentRunId ?? undefined,
372
+ name: event.type,
373
+ value: event.payload,
374
+ };
375
+ events.push(customEvent);
376
+ }
377
+ return events;
378
+ }
379
+ // ============================================================================
380
+ // Direct Event Emission Methods
381
+ // ============================================================================
382
+ /**
383
+ * Emit RUN_STARTED event directly
384
+ */
385
+ emitRunStarted(threadId, runId, input) {
386
+ const id = runId ?? this.generateId();
387
+ // Create run context
388
+ const runContext = {
389
+ runId: id,
390
+ threadId,
391
+ startedAt: this.generateTimestamp(),
392
+ activeSteps: new Set(),
393
+ activeMessages: new Set(),
394
+ activeToolCalls: new Set(),
395
+ };
396
+ this.activeRuns.set(id, runContext);
397
+ this.currentRunId = id;
398
+ const event = {
399
+ type: 'RUN_STARTED',
400
+ eventId: this.generateEventId(),
401
+ timestamp: this.generateTimestamp(),
402
+ threadId,
403
+ runId: id,
404
+ input,
405
+ };
406
+ this.emitEvent(event);
407
+ this.bufferEvent(event);
408
+ return event;
409
+ }
410
+ /**
411
+ * Emit RUN_FINISHED event directly
412
+ */
413
+ emitRunFinished(runId, outcome = 'success', result) {
414
+ const event = {
415
+ type: 'RUN_FINISHED',
416
+ eventId: this.generateEventId(),
417
+ timestamp: this.generateTimestamp(),
418
+ runId,
419
+ outcome,
420
+ result,
421
+ };
422
+ // Clean up
423
+ this.activeRuns.delete(runId);
424
+ if (this.currentRunId === runId) {
425
+ this.currentRunId = null;
426
+ }
427
+ this.emitEvent(event);
428
+ this.bufferEvent(event);
429
+ return event;
430
+ }
431
+ /**
432
+ * Emit RUN_ERROR event directly
433
+ */
434
+ emitRunError(runId, message, code, recoverable = false) {
435
+ const event = {
436
+ type: 'RUN_ERROR',
437
+ eventId: this.generateEventId(),
438
+ timestamp: this.generateTimestamp(),
439
+ runId,
440
+ message,
441
+ code,
442
+ recoverable,
443
+ };
444
+ // Clean up
445
+ this.activeRuns.delete(runId);
446
+ if (this.currentRunId === runId) {
447
+ this.currentRunId = null;
448
+ }
449
+ this.emitEvent(event);
450
+ this.bufferEvent(event);
451
+ return event;
452
+ }
453
+ /**
454
+ * Emit STEP_STARTED event directly
455
+ */
456
+ emitStepStarted(stepId, name, runId) {
457
+ const rid = runId ?? this.currentRunId ?? this.createOrGetRunId();
458
+ const event = {
459
+ type: 'STEP_STARTED',
460
+ eventId: this.generateEventId(),
461
+ timestamp: this.generateTimestamp(),
462
+ runId: rid,
463
+ stepId,
464
+ name,
465
+ };
466
+ // Track in run context
467
+ const runContext = this.activeRuns.get(rid);
468
+ if (runContext) {
469
+ runContext.activeSteps.add(stepId);
470
+ }
471
+ this.emitEvent(event);
472
+ this.bufferEvent(event);
473
+ return event;
474
+ }
475
+ /**
476
+ * Emit STEP_FINISHED event directly
477
+ */
478
+ emitStepFinished(stepId, result, runId) {
479
+ const rid = runId ?? this.currentRunId ?? this.config.defaultThreadId;
480
+ const event = {
481
+ type: 'STEP_FINISHED',
482
+ eventId: this.generateEventId(),
483
+ timestamp: this.generateTimestamp(),
484
+ runId: rid,
485
+ stepId,
486
+ result,
487
+ };
488
+ // Remove from run context
489
+ const runContext = this.activeRuns.get(rid);
490
+ if (runContext) {
491
+ runContext.activeSteps.delete(stepId);
492
+ }
493
+ this.emitEvent(event);
494
+ this.bufferEvent(event);
495
+ return event;
496
+ }
497
+ /**
498
+ * Emit TEXT_MESSAGE_START event directly
499
+ */
500
+ emitTextMessageStart(messageId, role = 'assistant') {
501
+ const event = {
502
+ type: 'TEXT_MESSAGE_START',
503
+ eventId: this.generateEventId(),
504
+ timestamp: this.generateTimestamp(),
505
+ runId: this.currentRunId ?? undefined,
506
+ messageId,
507
+ role,
508
+ };
509
+ // Track message state
510
+ if (this.config.trackMessageState) {
511
+ this.messageStates.set(messageId, {
512
+ messageId,
513
+ content: '',
514
+ role,
515
+ startedAt: event.timestamp,
516
+ complete: false,
517
+ });
518
+ }
519
+ this.emitEvent(event);
520
+ this.bufferEvent(event);
521
+ return event;
522
+ }
523
+ /**
524
+ * Emit TEXT_MESSAGE_CONTENT event directly
525
+ */
526
+ emitTextMessageContent(messageId, delta) {
527
+ const event = {
528
+ type: 'TEXT_MESSAGE_CONTENT',
529
+ eventId: this.generateEventId(),
530
+ timestamp: this.generateTimestamp(),
531
+ messageId,
532
+ delta,
533
+ };
534
+ // Update message state
535
+ if (this.config.trackMessageState) {
536
+ const state = this.messageStates.get(messageId);
537
+ if (state) {
538
+ state.content += delta;
539
+ }
540
+ }
541
+ this.emitEvent(event);
542
+ this.bufferEvent(event);
543
+ return event;
544
+ }
545
+ /**
546
+ * Emit TEXT_MESSAGE_END event directly
547
+ */
548
+ emitTextMessageEnd(messageId) {
549
+ // Get accumulated content
550
+ const state = this.messageStates.get(messageId);
551
+ const content = state?.content;
552
+ const event = {
553
+ type: 'TEXT_MESSAGE_END',
554
+ eventId: this.generateEventId(),
555
+ timestamp: this.generateTimestamp(),
556
+ messageId,
557
+ content,
558
+ };
559
+ // Update message state
560
+ if (state) {
561
+ state.complete = true;
562
+ }
563
+ this.emitEvent(event);
564
+ this.bufferEvent(event);
565
+ return event;
566
+ }
567
+ /**
568
+ * Emit TOOL_CALL_START event directly
569
+ */
570
+ emitToolCallStart(toolCallId, toolCallName, parentMessageId) {
571
+ const event = {
572
+ type: 'TOOL_CALL_START',
573
+ eventId: this.generateEventId(),
574
+ timestamp: this.generateTimestamp(),
575
+ runId: this.currentRunId ?? undefined,
576
+ toolCallId,
577
+ toolCallName,
578
+ parentMessageId,
579
+ };
580
+ // Track tool call state
581
+ this.toolCallStates.set(toolCallId, {
582
+ toolCallId,
583
+ toolName: toolCallName,
584
+ argsJson: '',
585
+ startedAt: event.timestamp,
586
+ complete: false,
587
+ });
588
+ // Track in run context
589
+ const runContext = this.activeRuns.get(this.currentRunId ?? '');
590
+ if (runContext) {
591
+ runContext.activeToolCalls.add(toolCallId);
592
+ }
593
+ this.emitEvent(event);
594
+ this.bufferEvent(event);
595
+ return event;
596
+ }
597
+ /**
598
+ * Emit TOOL_CALL_ARGS event directly
599
+ */
600
+ emitToolCallArgs(toolCallId, delta) {
601
+ const event = {
602
+ type: 'TOOL_CALL_ARGS',
603
+ eventId: this.generateEventId(),
604
+ timestamp: this.generateTimestamp(),
605
+ toolCallId,
606
+ delta,
607
+ };
608
+ // Update tool call state
609
+ const state = this.toolCallStates.get(toolCallId);
610
+ if (state) {
611
+ state.argsJson += delta;
612
+ }
613
+ this.emitEvent(event);
614
+ this.bufferEvent(event);
615
+ return event;
616
+ }
617
+ /**
618
+ * Emit TOOL_CALL_END event directly
619
+ */
620
+ emitToolCallEnd(toolCallId) {
621
+ // Get accumulated args
622
+ const state = this.toolCallStates.get(toolCallId);
623
+ let args;
624
+ if (state) {
625
+ try {
626
+ args = JSON.parse(state.argsJson);
627
+ state.args = args;
628
+ }
629
+ catch {
630
+ // Invalid JSON, leave args undefined
631
+ }
632
+ }
633
+ const event = {
634
+ type: 'TOOL_CALL_END',
635
+ eventId: this.generateEventId(),
636
+ timestamp: this.generateTimestamp(),
637
+ toolCallId,
638
+ args,
639
+ };
640
+ this.emitEvent(event);
641
+ this.bufferEvent(event);
642
+ return event;
643
+ }
644
+ /**
645
+ * Emit TOOL_CALL_RESULT event directly
646
+ */
647
+ emitToolCallResult(toolCallId, content, messageId, success = true) {
648
+ const mid = messageId ?? this.generateId();
649
+ const event = {
650
+ type: 'TOOL_CALL_RESULT',
651
+ eventId: this.generateEventId(),
652
+ timestamp: this.generateTimestamp(),
653
+ toolCallId,
654
+ messageId: mid,
655
+ content,
656
+ success,
657
+ };
658
+ // Update tool call state
659
+ const state = this.toolCallStates.get(toolCallId);
660
+ if (state) {
661
+ state.complete = true;
662
+ state.result = content;
663
+ }
664
+ // Remove from run context
665
+ const runContext = this.activeRuns.get(this.currentRunId ?? '');
666
+ if (runContext) {
667
+ runContext.activeToolCalls.delete(toolCallId);
668
+ }
669
+ this.emitEvent(event);
670
+ this.bufferEvent(event);
671
+ return event;
672
+ }
673
+ /**
674
+ * Emit STATE_SNAPSHOT event directly
675
+ */
676
+ emitStateSnapshot(state, version) {
677
+ const event = {
678
+ type: 'STATE_SNAPSHOT',
679
+ eventId: this.generateEventId(),
680
+ timestamp: this.generateTimestamp(),
681
+ runId: this.currentRunId ?? undefined,
682
+ state,
683
+ version,
684
+ };
685
+ this.emitEvent(event);
686
+ this.bufferEvent(event);
687
+ return event;
688
+ }
689
+ /**
690
+ * Emit STATE_DELTA event directly
691
+ */
692
+ emitStateDelta(delta, version) {
693
+ const event = {
694
+ type: 'STATE_DELTA',
695
+ eventId: this.generateEventId(),
696
+ timestamp: this.generateTimestamp(),
697
+ runId: this.currentRunId ?? undefined,
698
+ delta,
699
+ version,
700
+ };
701
+ this.emitEvent(event);
702
+ this.bufferEvent(event);
703
+ return event;
704
+ }
705
+ /**
706
+ * Emit MESSAGES_SNAPSHOT event directly
707
+ */
708
+ emitMessagesSnapshot(messages) {
709
+ const event = {
710
+ type: 'MESSAGES_SNAPSHOT',
711
+ eventId: this.generateEventId(),
712
+ timestamp: this.generateTimestamp(),
713
+ runId: this.currentRunId ?? undefined,
714
+ messages,
715
+ };
716
+ this.emitEvent(event);
717
+ this.bufferEvent(event);
718
+ return event;
719
+ }
720
+ /**
721
+ * Emit ACTIVITY_SNAPSHOT event directly
722
+ */
723
+ emitActivitySnapshot(activity, replace = false) {
724
+ const event = {
725
+ type: 'ACTIVITY_SNAPSHOT',
726
+ eventId: this.generateEventId(),
727
+ timestamp: this.generateTimestamp(),
728
+ runId: this.currentRunId ?? undefined,
729
+ activity,
730
+ replace,
731
+ };
732
+ // Update activity tracking
733
+ if (this.config.trackActivityState) {
734
+ if (replace) {
735
+ this.activities = [...activity];
736
+ }
737
+ else {
738
+ this.activities.push(...activity);
739
+ }
740
+ }
741
+ this.emitEvent(event);
742
+ this.bufferEvent(event);
743
+ return event;
744
+ }
745
+ /**
746
+ * Emit ACTIVITY_DELTA event directly
747
+ */
748
+ emitActivityDelta(delta) {
749
+ const event = {
750
+ type: 'ACTIVITY_DELTA',
751
+ eventId: this.generateEventId(),
752
+ timestamp: this.generateTimestamp(),
753
+ runId: this.currentRunId ?? undefined,
754
+ delta,
755
+ };
756
+ this.emitEvent(event);
757
+ this.bufferEvent(event);
758
+ return event;
759
+ }
760
+ /**
761
+ * Emit RAW event directly
762
+ */
763
+ emitRaw(rawEvent, source) {
764
+ const event = {
765
+ type: 'RAW',
766
+ eventId: this.generateEventId(),
767
+ timestamp: this.generateTimestamp(),
768
+ runId: this.currentRunId ?? undefined,
769
+ event: rawEvent,
770
+ source,
771
+ };
772
+ this.emitEvent(event);
773
+ this.bufferEvent(event);
774
+ return event;
775
+ }
776
+ /**
777
+ * Emit CUSTOM event directly
778
+ */
779
+ emitCustom(name, value) {
780
+ const event = {
781
+ type: 'CUSTOM',
782
+ eventId: this.generateEventId(),
783
+ timestamp: this.generateTimestamp(),
784
+ runId: this.currentRunId ?? undefined,
785
+ name,
786
+ value,
787
+ };
788
+ this.emitEvent(event);
789
+ this.bufferEvent(event);
790
+ return event;
791
+ }
792
+ // ============================================================================
793
+ // ID Mapping Methods
794
+ // ============================================================================
795
+ /**
796
+ * Get AG-UI ID for an AQE ID
797
+ */
798
+ getAguiId(aqeId) {
799
+ return this.aqeToAgui.get(aqeId);
800
+ }
801
+ /**
802
+ * Get AQE ID for an AG-UI ID
803
+ */
804
+ getAqeId(aguiId) {
805
+ return this.aguiToAqe.get(aguiId);
806
+ }
807
+ /**
808
+ * Get all ID mappings
809
+ */
810
+ getIdMappings() {
811
+ return [...this.idMappings];
812
+ }
813
+ /**
814
+ * Store bidirectional ID mapping
815
+ */
816
+ storeIdMapping(aqeId, aguiId, eventType) {
817
+ this.aqeToAgui.set(aqeId, aguiId);
818
+ this.aguiToAqe.set(aguiId, aqeId);
819
+ this.idMappings.push({
820
+ aqeId,
821
+ aguiId,
822
+ createdAt: this.generateTimestamp(),
823
+ eventType,
824
+ });
825
+ }
826
+ // ============================================================================
827
+ // State Accessors
828
+ // ============================================================================
829
+ /**
830
+ * Get current run ID
831
+ */
832
+ getCurrentRunId() {
833
+ return this.currentRunId;
834
+ }
835
+ /**
836
+ * Get active runs
837
+ */
838
+ getActiveRuns() {
839
+ return new Map(this.activeRuns);
840
+ }
841
+ /**
842
+ * Get message state
843
+ */
844
+ getMessageState(messageId) {
845
+ return this.messageStates.get(messageId);
846
+ }
847
+ /**
848
+ * Get all message states
849
+ */
850
+ getAllMessageStates() {
851
+ return new Map(this.messageStates);
852
+ }
853
+ /**
854
+ * Get tool call state
855
+ */
856
+ getToolCallState(toolCallId) {
857
+ return this.toolCallStates.get(toolCallId);
858
+ }
859
+ /**
860
+ * Get all tool call states
861
+ */
862
+ getAllToolCallStates() {
863
+ return new Map(this.toolCallStates);
864
+ }
865
+ /**
866
+ * Get current activities
867
+ */
868
+ getActivities() {
869
+ return [...this.activities];
870
+ }
871
+ /**
872
+ * Get buffered events
873
+ */
874
+ getBufferedEvents() {
875
+ return [...this.eventBuffer];
876
+ }
877
+ /**
878
+ * Clear buffered events
879
+ */
880
+ clearBuffer() {
881
+ this.eventBuffer = [];
882
+ }
883
+ // ============================================================================
884
+ // Utility Methods
885
+ // ============================================================================
886
+ /**
887
+ * Reset adapter state
888
+ */
889
+ reset() {
890
+ // Flush any pending batched events before reset
891
+ if (this.eventBatcher) {
892
+ this.eventBatcher.flush('manual');
893
+ this.eventBatcher.resetMetrics();
894
+ }
895
+ this.aqeToAgui.clear();
896
+ this.aguiToAqe.clear();
897
+ this.idMappings = [];
898
+ this.activeRuns.clear();
899
+ this.currentRunId = null;
900
+ this.messageStates.clear();
901
+ this.toolCallStates.clear();
902
+ this.activities = [];
903
+ this.eventBuffer = [];
904
+ this.stepProgress.clear();
905
+ }
906
+ /**
907
+ * Generate unique ID
908
+ */
909
+ generateId() {
910
+ return this.config.eventIdGenerator();
911
+ }
912
+ /**
913
+ * Generate event ID
914
+ */
915
+ generateEventId() {
916
+ return `evt_${this.config.eventIdGenerator()}`;
917
+ }
918
+ /**
919
+ * Generate timestamp
920
+ */
921
+ generateTimestamp() {
922
+ return this.config.timestampGenerator();
923
+ }
924
+ /**
925
+ * Create or get current run ID
926
+ */
927
+ createOrGetRunId() {
928
+ if (this.currentRunId) {
929
+ return this.currentRunId;
930
+ }
931
+ const runId = this.generateId();
932
+ const threadId = this.config.defaultThreadId;
933
+ const runContext = {
934
+ runId,
935
+ threadId,
936
+ startedAt: this.generateTimestamp(),
937
+ activeSteps: new Set(),
938
+ activeMessages: new Set(),
939
+ activeToolCalls: new Set(),
940
+ };
941
+ this.activeRuns.set(runId, runContext);
942
+ this.currentRunId = runId;
943
+ return runId;
944
+ }
945
+ /**
946
+ * Get or create message ID for a step
947
+ */
948
+ getOrCreateMessageId(stepId) {
949
+ // Check if we have an active message for this step
950
+ const entries = Array.from(this.messageStates.entries());
951
+ for (const [messageId, state] of entries) {
952
+ if (!state.complete) {
953
+ return messageId;
954
+ }
955
+ }
956
+ // Create new message
957
+ const messageId = this.generateId();
958
+ if (this.config.trackMessageState) {
959
+ this.messageStates.set(messageId, {
960
+ messageId,
961
+ content: '',
962
+ role: 'assistant',
963
+ startedAt: this.generateTimestamp(),
964
+ complete: false,
965
+ });
966
+ }
967
+ return messageId;
968
+ }
969
+ /**
970
+ * Create RAW event for unknown source event
971
+ */
972
+ createRawEvent(event) {
973
+ return {
974
+ type: 'RAW',
975
+ eventId: this.generateEventId(),
976
+ timestamp: this.generateTimestamp(),
977
+ runId: this.currentRunId ?? undefined,
978
+ event,
979
+ source: 'aqe',
980
+ };
981
+ }
982
+ /**
983
+ * Emit event via EventEmitter (uses batcher if enabled)
984
+ */
985
+ emitEvent(event) {
986
+ if (this.eventBatcher) {
987
+ // Use batcher - it will handle batching and emit via handleBatchFlush
988
+ this.eventBatcher.add(event);
989
+ }
990
+ else {
991
+ // Direct emission without batching
992
+ this.emit('event', event);
993
+ this.emit(event.type, event);
994
+ }
995
+ }
996
+ /**
997
+ * Buffer event for streaming
998
+ */
999
+ bufferEvent(event) {
1000
+ this.eventBuffer.push(event);
1001
+ // Enforce max buffer size
1002
+ if (this.eventBuffer.length > this.config.maxBufferSize) {
1003
+ this.eventBuffer.shift();
1004
+ }
1005
+ }
1006
+ /**
1007
+ * Validate event structure
1008
+ */
1009
+ validateEvent(event) {
1010
+ if (!event.type) {
1011
+ throw new Error('Event missing required type field');
1012
+ }
1013
+ if (!event.eventId) {
1014
+ throw new Error('Event missing required eventId field');
1015
+ }
1016
+ if (!event.timestamp) {
1017
+ throw new Error('Event missing required timestamp field');
1018
+ }
1019
+ }
1020
+ // ============================================================================
1021
+ // Batcher Operations
1022
+ // ============================================================================
1023
+ /**
1024
+ * Get the event batcher instance (if enabled)
1025
+ */
1026
+ getEventBatcher() {
1027
+ return this.eventBatcher;
1028
+ }
1029
+ /**
1030
+ * Check if event batching is enabled
1031
+ */
1032
+ isBatchingEnabled() {
1033
+ return this.eventBatcher !== null;
1034
+ }
1035
+ /**
1036
+ * Get batcher metrics (if batching is enabled)
1037
+ */
1038
+ getBatcherMetrics() {
1039
+ return this.eventBatcher ? this.eventBatcher.getMetrics() : null;
1040
+ }
1041
+ /**
1042
+ * Manually flush any pending batched events
1043
+ */
1044
+ flushBatcher() {
1045
+ if (this.eventBatcher) {
1046
+ this.eventBatcher.flush('manual');
1047
+ }
1048
+ }
1049
+ /**
1050
+ * Enable or disable event batching at runtime
1051
+ */
1052
+ setBatchingEnabled(enabled) {
1053
+ if (this.eventBatcher) {
1054
+ if (enabled) {
1055
+ this.eventBatcher.enable();
1056
+ }
1057
+ else {
1058
+ this.eventBatcher.disable();
1059
+ }
1060
+ }
1061
+ }
1062
+ /**
1063
+ * Reset batcher metrics
1064
+ */
1065
+ resetBatcherMetrics() {
1066
+ if (this.eventBatcher) {
1067
+ this.eventBatcher.resetMetrics();
1068
+ }
1069
+ }
1070
+ }
1071
+ // ============================================================================
1072
+ // Factory Function
1073
+ // ============================================================================
1074
+ /**
1075
+ * Create a new EventAdapter instance
1076
+ *
1077
+ * @param config - Optional configuration
1078
+ * @returns EventAdapter instance
1079
+ */
1080
+ export function createEventAdapter(config = {}) {
1081
+ return new EventAdapter(config);
1082
+ }
1083
+ //# sourceMappingURL=event-adapter.js.map