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,59 @@
1
+ /**
2
+ * Convergence Tracker Implementation
3
+ *
4
+ * Tracks the state of multiple CRDT stores to determine when they have
5
+ * converged to the same state. Used for monitoring distributed system health
6
+ * and ensuring eventual consistency.
7
+ *
8
+ * @module memory/crdt/convergence-tracker
9
+ */
10
+ import type { ConvergenceTracker, ConvergenceTrackerConfig, ConvergenceStatus, NodeStateSnapshot } from './types.js';
11
+ /**
12
+ * Create a new Convergence Tracker
13
+ *
14
+ * @param config - Tracker configuration
15
+ * @returns Convergence Tracker instance
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const tracker = createConvergenceTracker();
20
+ *
21
+ * // Record state from each node
22
+ * tracker.recordNodeState('node-1', store1.getState());
23
+ * tracker.recordNodeState('node-2', store2.getState());
24
+ *
25
+ * // Check if they've converged
26
+ * if (tracker.hasConverged()) {
27
+ * console.log('All nodes have same state!');
28
+ * }
29
+ * ```
30
+ */
31
+ export declare function createConvergenceTracker(config?: ConvergenceTrackerConfig): ConvergenceTracker;
32
+ /**
33
+ * Convergence metrics for monitoring
34
+ */
35
+ export interface ConvergenceMetrics {
36
+ /** Average time to convergence (ms) */
37
+ averageConvergenceTime: number | null;
38
+ /** Number of convergence events recorded */
39
+ convergenceCount: number;
40
+ /** Time since tracking started (ms) */
41
+ trackingDuration: number;
42
+ /** Percentage of time system was converged */
43
+ convergenceRatio: number;
44
+ }
45
+ /**
46
+ * Extended tracker with metrics collection
47
+ */
48
+ export interface MetricsConvergenceTracker extends ConvergenceTracker {
49
+ /** Get convergence metrics */
50
+ getMetrics(): ConvergenceMetrics;
51
+ /** Reset metrics (keeps node tracking) */
52
+ resetMetrics(): void;
53
+ }
54
+ /**
55
+ * Create a convergence tracker with metrics collection
56
+ */
57
+ export declare function createMetricsConvergenceTracker(config?: ConvergenceTrackerConfig): MetricsConvergenceTracker;
58
+ export type { ConvergenceTracker, ConvergenceTrackerConfig, ConvergenceStatus, NodeStateSnapshot, };
59
+ //# sourceMappingURL=convergence-tracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convergence-tracker.d.ts","sourceRoot":"","sources":["../../../src/memory/crdt/convergence-tracker.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAsGpB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,CAAC,EAAE,wBAAwB,GAChC,kBAAkB,CAkLpB;AAMD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,4CAA4C;IAC5C,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,gBAAgB,EAAE,MAAM,CAAC;IACzB,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,kBAAkB;IACnE,8BAA8B;IAC9B,UAAU,IAAI,kBAAkB,CAAC;IACjC,0CAA0C;IAC1C,YAAY,IAAI,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,MAAM,CAAC,EAAE,wBAAwB,GAChC,yBAAyB,CAuE3B;AAMD,YAAY,EACV,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,GAClB,CAAC"}
@@ -0,0 +1,325 @@
1
+ /**
2
+ * Convergence Tracker Implementation
3
+ *
4
+ * Tracks the state of multiple CRDT stores to determine when they have
5
+ * converged to the same state. Used for monitoring distributed system health
6
+ * and ensuring eventual consistency.
7
+ *
8
+ * @module memory/crdt/convergence-tracker
9
+ */
10
+ // =============================================================================
11
+ // Default Configuration
12
+ // =============================================================================
13
+ const DEFAULT_CONFIG = {
14
+ historyRetentionMs: 60_000, // 1 minute
15
+ staleThresholdMs: 30_000, // 30 seconds
16
+ };
17
+ // =============================================================================
18
+ // Hash Utilities
19
+ // =============================================================================
20
+ /**
21
+ * Generate a content-based hash of CRDT store state for quick comparison.
22
+ * This hash is based on the *semantic value* of the CRDTs (what they evaluate to),
23
+ * not the internal representations, so that stores with equivalent data produce
24
+ * the same hash regardless of how they arrived at that state.
25
+ *
26
+ * Not cryptographic - just for detecting differences.
27
+ */
28
+ function hashState(state) {
29
+ const parts = [];
30
+ // Hash registers by their current value (timestamp/nodeId determine winner, but we
31
+ // compare the result - if both have same winner, they have same value)
32
+ for (const [key, reg] of Object.entries(state.registers)) {
33
+ // Include value, timestamp, and nodeId - these together determine the LWW winner
34
+ parts.push(`r:${key}:${JSON.stringify(reg.value)}:${reg.timestamp}:${reg.nodeId}`);
35
+ }
36
+ // Hash G-Counters by their TOTAL value (not per-node breakdown)
37
+ // Two stores are converged if they produce the same sum, even if the internal
38
+ // per-node counts differ (e.g., one has extra nodes with count 0)
39
+ for (const [key, counter] of Object.entries(state.gCounters)) {
40
+ const total = Object.values(counter.counts).reduce((sum, c) => sum + c, 0);
41
+ // Also include non-zero counts to detect semantic differences
42
+ const nonZeroCounts = Object.entries(counter.counts)
43
+ .filter(([_, count]) => count > 0)
44
+ .sort(([a], [b]) => a.localeCompare(b))
45
+ .map(([nodeId, count]) => `${nodeId}=${count}`)
46
+ .join(',');
47
+ parts.push(`g:${key}:${total}:{${nonZeroCounts}}`);
48
+ }
49
+ // Hash PN-Counters by their NET value (positive - negative)
50
+ // Two stores are converged if they evaluate to the same number
51
+ for (const [key, counter] of Object.entries(state.pnCounters)) {
52
+ const posTotal = Object.values(counter.positive.counts).reduce((sum, c) => sum + c, 0);
53
+ const negTotal = Object.values(counter.negative.counts).reduce((sum, c) => sum + c, 0);
54
+ const netValue = posTotal - negTotal;
55
+ // Include non-zero contributions for semantic comparison
56
+ const nonZeroPos = Object.entries(counter.positive.counts)
57
+ .filter(([_, count]) => count > 0)
58
+ .sort(([a], [b]) => a.localeCompare(b))
59
+ .map(([nodeId, count]) => `${nodeId}=+${count}`)
60
+ .join(',');
61
+ const nonZeroNeg = Object.entries(counter.negative.counts)
62
+ .filter(([_, count]) => count > 0)
63
+ .sort(([a], [b]) => a.localeCompare(b))
64
+ .map(([nodeId, count]) => `${nodeId}=-${count}`)
65
+ .join(',');
66
+ parts.push(`p:${key}:${netValue}:{${nonZeroPos}|${nonZeroNeg}}`);
67
+ }
68
+ // Hash OR-Sets by their active elements (elements with at least one non-tombstoned tag)
69
+ for (const [key, set] of Object.entries(state.sets)) {
70
+ // Compute active elements: elements where at least one tag is not tombstoned
71
+ const activeElements = [];
72
+ for (const [elem, tags] of Object.entries(set.elements)) {
73
+ const tombstoneTags = new Set(set.tombstones[elem] || []);
74
+ const hasActiveTag = tags.some(tag => !tombstoneTags.has(tag));
75
+ if (hasActiveTag) {
76
+ activeElements.push(elem);
77
+ }
78
+ }
79
+ activeElements.sort();
80
+ parts.push(`s:${key}:[${activeElements.join(',')}]`);
81
+ }
82
+ // Sort for consistency
83
+ parts.sort();
84
+ // Simple hash: join and get a fingerprint
85
+ const joined = parts.join('|');
86
+ let hash = 0;
87
+ for (let i = 0; i < joined.length; i++) {
88
+ const char = joined.charCodeAt(i);
89
+ hash = ((hash << 5) - hash) + char;
90
+ hash = hash & hash; // Convert to 32-bit integer
91
+ }
92
+ // Return hash without version - version is per-node and shouldn't affect convergence check
93
+ return hash.toString(16);
94
+ }
95
+ // =============================================================================
96
+ // Convergence Tracker Implementation
97
+ // =============================================================================
98
+ /**
99
+ * Create a new Convergence Tracker
100
+ *
101
+ * @param config - Tracker configuration
102
+ * @returns Convergence Tracker instance
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * const tracker = createConvergenceTracker();
107
+ *
108
+ * // Record state from each node
109
+ * tracker.recordNodeState('node-1', store1.getState());
110
+ * tracker.recordNodeState('node-2', store2.getState());
111
+ *
112
+ * // Check if they've converged
113
+ * if (tracker.hasConverged()) {
114
+ * console.log('All nodes have same state!');
115
+ * }
116
+ * ```
117
+ */
118
+ export function createConvergenceTracker(config) {
119
+ const cfg = { ...DEFAULT_CONFIG, ...config };
120
+ const { historyRetentionMs, staleThresholdMs } = cfg;
121
+ // Track node states: nodeId -> latest snapshot
122
+ const nodeStates = new Map();
123
+ // Track state history for each node: nodeId -> array of snapshots
124
+ const stateHistory = new Map();
125
+ // Track last convergence time
126
+ let lastConvergenceTime = null;
127
+ /**
128
+ * Clean up old history entries
129
+ */
130
+ function cleanupHistory() {
131
+ const now = Date.now();
132
+ const cutoff = now - historyRetentionMs;
133
+ for (const [nodeId, history] of stateHistory) {
134
+ const filtered = history.filter((s) => s.timestamp >= cutoff);
135
+ if (filtered.length !== history.length) {
136
+ stateHistory.set(nodeId, filtered);
137
+ }
138
+ }
139
+ }
140
+ /**
141
+ * Check if a node is stale (hasn't reported recently)
142
+ */
143
+ function isNodeStale(snapshot) {
144
+ return Date.now() - snapshot.timestamp > staleThresholdMs;
145
+ }
146
+ return {
147
+ recordNodeState(nodeId, state) {
148
+ const snapshot = {
149
+ nodeId,
150
+ version: state.version,
151
+ timestamp: Date.now(),
152
+ stateHash: hashState(state),
153
+ };
154
+ // Update current state
155
+ nodeStates.set(nodeId, snapshot);
156
+ // Add to history
157
+ if (!stateHistory.has(nodeId)) {
158
+ stateHistory.set(nodeId, []);
159
+ }
160
+ stateHistory.get(nodeId).push(snapshot);
161
+ // Cleanup old history
162
+ cleanupHistory();
163
+ // Check if convergence just happened
164
+ if (this.hasConverged()) {
165
+ lastConvergenceTime = Date.now();
166
+ }
167
+ },
168
+ hasConverged() {
169
+ if (nodeStates.size < 2) {
170
+ return true; // Single node is always converged with itself
171
+ }
172
+ // Get non-stale nodes
173
+ const activeSnapshots = [];
174
+ for (const snapshot of nodeStates.values()) {
175
+ if (!isNodeStale(snapshot)) {
176
+ activeSnapshots.push(snapshot);
177
+ }
178
+ }
179
+ if (activeSnapshots.length < 2) {
180
+ return true; // Only one active node
181
+ }
182
+ // Check if all active nodes have the same hash
183
+ const firstHash = activeSnapshots[0].stateHash;
184
+ return activeSnapshots.every((s) => s.stateHash === firstHash);
185
+ },
186
+ getStatus() {
187
+ const activeSnapshots = [];
188
+ const staleSnapshots = [];
189
+ for (const snapshot of nodeStates.values()) {
190
+ if (isNodeStale(snapshot)) {
191
+ staleSnapshots.push(snapshot);
192
+ }
193
+ else {
194
+ activeSnapshots.push(snapshot);
195
+ }
196
+ }
197
+ // Find max version
198
+ let maxVersion = 0;
199
+ let minVersion = Number.MAX_SAFE_INTEGER;
200
+ for (const snapshot of activeSnapshots) {
201
+ maxVersion = Math.max(maxVersion, snapshot.version);
202
+ minVersion = Math.min(minVersion, snapshot.version);
203
+ }
204
+ if (activeSnapshots.length === 0) {
205
+ minVersion = 0;
206
+ }
207
+ // Find lagging nodes
208
+ const laggingNodes = [];
209
+ if (activeSnapshots.length > 1) {
210
+ const maxHash = activeSnapshots.reduce((best, s) => (s.version > best.version ? s : best), activeSnapshots[0]).stateHash;
211
+ for (const snapshot of activeSnapshots) {
212
+ if (snapshot.stateHash !== maxHash) {
213
+ laggingNodes.push(snapshot.nodeId);
214
+ }
215
+ }
216
+ }
217
+ // Add stale nodes as lagging
218
+ for (const snapshot of staleSnapshots) {
219
+ laggingNodes.push(snapshot.nodeId);
220
+ }
221
+ const converged = laggingNodes.length === 0 && activeSnapshots.length > 0;
222
+ return {
223
+ converged,
224
+ nodeCount: nodeStates.size,
225
+ syncedNodes: activeSnapshots.length - laggingNodes.filter((id) => !staleSnapshots.some((s) => s.nodeId === id)).length,
226
+ laggingNodes,
227
+ lastConvergenceTime,
228
+ maxVersion,
229
+ minVersion,
230
+ };
231
+ },
232
+ getLaggingNodes() {
233
+ return this.getStatus().laggingNodes;
234
+ },
235
+ getTimeSinceConvergence() {
236
+ if (lastConvergenceTime === null) {
237
+ return null;
238
+ }
239
+ return Date.now() - lastConvergenceTime;
240
+ },
241
+ removeNode(nodeId) {
242
+ nodeStates.delete(nodeId);
243
+ stateHistory.delete(nodeId);
244
+ },
245
+ clear() {
246
+ nodeStates.clear();
247
+ stateHistory.clear();
248
+ lastConvergenceTime = null;
249
+ },
250
+ getTrackedNodes() {
251
+ return Array.from(nodeStates.keys());
252
+ },
253
+ isTracking(nodeId) {
254
+ return nodeStates.has(nodeId);
255
+ },
256
+ getNodeVersion(nodeId) {
257
+ const snapshot = nodeStates.get(nodeId);
258
+ return snapshot?.version ?? null;
259
+ },
260
+ };
261
+ }
262
+ /**
263
+ * Create a convergence tracker with metrics collection
264
+ */
265
+ export function createMetricsConvergenceTracker(config) {
266
+ const baseTracker = createConvergenceTracker(config);
267
+ // Metrics tracking
268
+ const startTime = Date.now();
269
+ let convergenceCount = 0;
270
+ let totalConvergedTime = 0;
271
+ let lastStateChangeTime = startTime;
272
+ let wasConverged = true;
273
+ const convergenceTimes = [];
274
+ // Wrap recordNodeState to track metrics
275
+ const originalRecord = baseTracker.recordNodeState.bind(baseTracker);
276
+ return {
277
+ ...baseTracker,
278
+ recordNodeState(nodeId, state) {
279
+ const wasConvergedBefore = baseTracker.hasConverged();
280
+ originalRecord(nodeId, state);
281
+ const isConvergedNow = baseTracker.hasConverged();
282
+ const now = Date.now();
283
+ // Track state changes
284
+ if (wasConvergedBefore !== isConvergedNow) {
285
+ const duration = now - lastStateChangeTime;
286
+ if (wasConvergedBefore) {
287
+ // Was converged, now diverged
288
+ totalConvergedTime += duration;
289
+ }
290
+ else {
291
+ // Was diverged, now converged
292
+ convergenceCount++;
293
+ convergenceTimes.push(duration);
294
+ }
295
+ lastStateChangeTime = now;
296
+ wasConverged = isConvergedNow;
297
+ }
298
+ },
299
+ getMetrics() {
300
+ const now = Date.now();
301
+ const trackingDuration = now - startTime;
302
+ // Add current state duration
303
+ let convergedTime = totalConvergedTime;
304
+ if (wasConverged) {
305
+ convergedTime += now - lastStateChangeTime;
306
+ }
307
+ return {
308
+ averageConvergenceTime: convergenceTimes.length > 0
309
+ ? convergenceTimes.reduce((a, b) => a + b, 0) / convergenceTimes.length
310
+ : null,
311
+ convergenceCount,
312
+ trackingDuration,
313
+ convergenceRatio: trackingDuration > 0 ? convergedTime / trackingDuration : 1,
314
+ };
315
+ },
316
+ resetMetrics() {
317
+ convergenceCount = 0;
318
+ totalConvergedTime = 0;
319
+ convergenceTimes.length = 0;
320
+ lastStateChangeTime = Date.now();
321
+ wasConverged = baseTracker.hasConverged();
322
+ },
323
+ };
324
+ }
325
+ //# sourceMappingURL=convergence-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"convergence-tracker.js","sourceRoot":"","sources":["../../../src/memory/crdt/convergence-tracker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Unified CRDT Store Implementation
3
+ *
4
+ * A unified store managing multiple CRDT types with support for:
5
+ * - Full state replication
6
+ * - Delta-based incremental sync
7
+ * - Change event emission
8
+ * - Type-safe access to different CRDT types
9
+ *
10
+ * @module memory/crdt/crdt-store
11
+ */
12
+ import type { CRDTStore, CRDTStoreConfig, CRDTStoreState, CRDTStoreDelta } from './types.js';
13
+ /**
14
+ * Create a new CRDT Store
15
+ *
16
+ * @param config - Store configuration
17
+ * @returns CRDT Store instance
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * const store = createCRDTStore({ nodeId: 'agent-1' });
22
+ *
23
+ * // Use registers
24
+ * store.setRegister('config', { maxAgents: 100 });
25
+ *
26
+ * // Use counters
27
+ * store.incrementCounter('tasks-completed');
28
+ *
29
+ * // Use sets
30
+ * store.addToSet('active-agents', 'agent-1');
31
+ *
32
+ * // Merge with another store
33
+ * store.merge(otherStore);
34
+ * ```
35
+ */
36
+ export declare function createCRDTStore(config: CRDTStoreConfig): CRDTStore;
37
+ /**
38
+ * Create a CRDT Store from existing state
39
+ *
40
+ * @param nodeId - Unique identifier for this node
41
+ * @param existingState - State to restore from
42
+ * @param config - Additional configuration
43
+ * @returns CRDT Store instance
44
+ */
45
+ export declare function createCRDTStoreFromState(nodeId: string, existingState: CRDTStoreState, config?: Partial<CRDTStoreConfig>): CRDTStore;
46
+ /**
47
+ * Check if a value is a valid CRDT Store state
48
+ */
49
+ export declare function isCRDTStoreState(value: unknown): value is CRDTStoreState;
50
+ /**
51
+ * Check if a value is a valid CRDT Store delta
52
+ */
53
+ export declare function isCRDTStoreDelta(value: unknown): value is CRDTStoreDelta;
54
+ export type { CRDTStore, CRDTStoreConfig, CRDTStoreState, CRDTStoreDelta };
55
+ //# sourceMappingURL=crdt-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crdt-store.d.ts","sourceRoot":"","sources":["../../../src/memory/crdt/crdt-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,cAAc,EACd,cAAc,EAaf,MAAM,YAAY,CAAC;AAqBpB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,SAAS,CA0jBlE;AAMD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,cAAc,EAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,SAAS,CAIX;AAMD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAexE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAYxE;AAMD,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC"}