agentic-qe 2.7.4 → 2.8.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 (519) hide show
  1. package/CHANGELOG.md +104 -0
  2. package/README.md +67 -2
  3. package/dist/cli/commands/agent/spawn.d.ts +12 -1
  4. package/dist/cli/commands/agent/spawn.d.ts.map +1 -1
  5. package/dist/cli/commands/agent/spawn.js +95 -8
  6. package/dist/cli/commands/agent/spawn.js.map +1 -1
  7. package/dist/cli/index.js +91 -0
  8. package/dist/cli/index.js.map +1 -1
  9. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  10. package/dist/edge/adapters/BrowserHNSWAdapter.d.ts +134 -0
  11. package/dist/edge/adapters/BrowserHNSWAdapter.d.ts.map +1 -0
  12. package/dist/edge/adapters/BrowserHNSWAdapter.js +484 -0
  13. package/dist/edge/adapters/BrowserHNSWAdapter.js.map +1 -0
  14. package/dist/edge/adapters/IndexedDBStorage.d.ts +114 -0
  15. package/dist/edge/adapters/IndexedDBStorage.d.ts.map +1 -0
  16. package/dist/edge/adapters/IndexedDBStorage.js +478 -0
  17. package/dist/edge/adapters/IndexedDBStorage.js.map +1 -0
  18. package/dist/edge/adapters/index.d.ts +12 -0
  19. package/dist/edge/adapters/index.d.ts.map +1 -0
  20. package/dist/edge/adapters/index.js +22 -0
  21. package/dist/edge/adapters/index.js.map +1 -0
  22. package/dist/edge/browser/BrowserAgent.d.ts +241 -0
  23. package/dist/edge/browser/BrowserAgent.d.ts.map +1 -0
  24. package/dist/edge/browser/BrowserAgent.js +743 -0
  25. package/dist/edge/browser/BrowserAgent.js.map +1 -0
  26. package/dist/edge/index.d.ts +34 -0
  27. package/dist/edge/index.d.ts.map +1 -0
  28. package/dist/edge/index.js +114 -0
  29. package/dist/edge/index.js.map +1 -0
  30. package/dist/edge/p2p/coordination/CoordinationManager.d.ts +181 -0
  31. package/dist/edge/p2p/coordination/CoordinationManager.d.ts.map +1 -0
  32. package/dist/edge/p2p/coordination/CoordinationManager.js +851 -0
  33. package/dist/edge/p2p/coordination/CoordinationManager.js.map +1 -0
  34. package/dist/edge/p2p/coordination/HealthMonitor.d.ts +143 -0
  35. package/dist/edge/p2p/coordination/HealthMonitor.d.ts.map +1 -0
  36. package/dist/edge/p2p/coordination/HealthMonitor.js +432 -0
  37. package/dist/edge/p2p/coordination/HealthMonitor.js.map +1 -0
  38. package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts +146 -0
  39. package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts.map +1 -0
  40. package/dist/edge/p2p/coordination/SyncOrchestrator.js +783 -0
  41. package/dist/edge/p2p/coordination/SyncOrchestrator.js.map +1 -0
  42. package/dist/edge/p2p/coordination/index.d.ts +70 -0
  43. package/dist/edge/p2p/coordination/index.d.ts.map +1 -0
  44. package/dist/edge/p2p/coordination/index.js +107 -0
  45. package/dist/edge/p2p/coordination/index.js.map +1 -0
  46. package/dist/edge/p2p/coordination/types.d.ts +572 -0
  47. package/dist/edge/p2p/coordination/types.d.ts.map +1 -0
  48. package/dist/edge/p2p/coordination/types.js +366 -0
  49. package/dist/edge/p2p/coordination/types.js.map +1 -0
  50. package/dist/edge/p2p/crdt/CRDTStore.d.ts +324 -0
  51. package/dist/edge/p2p/crdt/CRDTStore.d.ts.map +1 -0
  52. package/dist/edge/p2p/crdt/CRDTStore.js +839 -0
  53. package/dist/edge/p2p/crdt/CRDTStore.js.map +1 -0
  54. package/dist/edge/p2p/crdt/GCounter.d.ts +173 -0
  55. package/dist/edge/p2p/crdt/GCounter.d.ts.map +1 -0
  56. package/dist/edge/p2p/crdt/GCounter.js +394 -0
  57. package/dist/edge/p2p/crdt/GCounter.js.map +1 -0
  58. package/dist/edge/p2p/crdt/LWWRegister.d.ts +200 -0
  59. package/dist/edge/p2p/crdt/LWWRegister.d.ts.map +1 -0
  60. package/dist/edge/p2p/crdt/LWWRegister.js +456 -0
  61. package/dist/edge/p2p/crdt/LWWRegister.js.map +1 -0
  62. package/dist/edge/p2p/crdt/ORSet.d.ts +232 -0
  63. package/dist/edge/p2p/crdt/ORSet.d.ts.map +1 -0
  64. package/dist/edge/p2p/crdt/ORSet.js +723 -0
  65. package/dist/edge/p2p/crdt/ORSet.js.map +1 -0
  66. package/dist/edge/p2p/crdt/PatternCRDT.d.ts +366 -0
  67. package/dist/edge/p2p/crdt/PatternCRDT.d.ts.map +1 -0
  68. package/dist/edge/p2p/crdt/PatternCRDT.js +838 -0
  69. package/dist/edge/p2p/crdt/PatternCRDT.js.map +1 -0
  70. package/dist/edge/p2p/crdt/VectorClock.d.ts +274 -0
  71. package/dist/edge/p2p/crdt/VectorClock.d.ts.map +1 -0
  72. package/dist/edge/p2p/crdt/VectorClock.js +499 -0
  73. package/dist/edge/p2p/crdt/VectorClock.js.map +1 -0
  74. package/dist/edge/p2p/crdt/index.d.ts +87 -0
  75. package/dist/edge/p2p/crdt/index.d.ts.map +1 -0
  76. package/dist/edge/p2p/crdt/index.js +120 -0
  77. package/dist/edge/p2p/crdt/index.js.map +1 -0
  78. package/dist/edge/p2p/crdt/types.d.ts +667 -0
  79. package/dist/edge/p2p/crdt/types.d.ts.map +1 -0
  80. package/dist/edge/p2p/crdt/types.js +208 -0
  81. package/dist/edge/p2p/crdt/types.js.map +1 -0
  82. package/dist/edge/p2p/crypto/Identity.d.ts +139 -0
  83. package/dist/edge/p2p/crypto/Identity.d.ts.map +1 -0
  84. package/dist/edge/p2p/crypto/Identity.js +449 -0
  85. package/dist/edge/p2p/crypto/Identity.js.map +1 -0
  86. package/dist/edge/p2p/crypto/KeyManager.d.ts +196 -0
  87. package/dist/edge/p2p/crypto/KeyManager.d.ts.map +1 -0
  88. package/dist/edge/p2p/crypto/KeyManager.js +576 -0
  89. package/dist/edge/p2p/crypto/KeyManager.js.map +1 -0
  90. package/dist/edge/p2p/crypto/Signer.d.ts +164 -0
  91. package/dist/edge/p2p/crypto/Signer.d.ts.map +1 -0
  92. package/dist/edge/p2p/crypto/Signer.js +357 -0
  93. package/dist/edge/p2p/crypto/Signer.js.map +1 -0
  94. package/dist/edge/p2p/crypto/index.d.ts +90 -0
  95. package/dist/edge/p2p/crypto/index.d.ts.map +1 -0
  96. package/dist/edge/p2p/crypto/index.js +158 -0
  97. package/dist/edge/p2p/crypto/index.js.map +1 -0
  98. package/dist/edge/p2p/crypto/types.d.ts +217 -0
  99. package/dist/edge/p2p/crypto/types.d.ts.map +1 -0
  100. package/dist/edge/p2p/crypto/types.js +42 -0
  101. package/dist/edge/p2p/crypto/types.js.map +1 -0
  102. package/dist/edge/p2p/federated/FederatedCoordinator.d.ts +270 -0
  103. package/dist/edge/p2p/federated/FederatedCoordinator.d.ts.map +1 -0
  104. package/dist/edge/p2p/federated/FederatedCoordinator.js +824 -0
  105. package/dist/edge/p2p/federated/FederatedCoordinator.js.map +1 -0
  106. package/dist/edge/p2p/federated/FederatedRound.d.ts +295 -0
  107. package/dist/edge/p2p/federated/FederatedRound.d.ts.map +1 -0
  108. package/dist/edge/p2p/federated/FederatedRound.js +819 -0
  109. package/dist/edge/p2p/federated/FederatedRound.js.map +1 -0
  110. package/dist/edge/p2p/federated/GradientAggregator.d.ts +226 -0
  111. package/dist/edge/p2p/federated/GradientAggregator.d.ts.map +1 -0
  112. package/dist/edge/p2p/federated/GradientAggregator.js +826 -0
  113. package/dist/edge/p2p/federated/GradientAggregator.js.map +1 -0
  114. package/dist/edge/p2p/federated/ModelManager.d.ts +248 -0
  115. package/dist/edge/p2p/federated/ModelManager.d.ts.map +1 -0
  116. package/dist/edge/p2p/federated/ModelManager.js +724 -0
  117. package/dist/edge/p2p/federated/ModelManager.js.map +1 -0
  118. package/dist/edge/p2p/federated/index.d.ts +65 -0
  119. package/dist/edge/p2p/federated/index.d.ts.map +1 -0
  120. package/dist/edge/p2p/federated/index.js +110 -0
  121. package/dist/edge/p2p/federated/index.js.map +1 -0
  122. package/dist/edge/p2p/federated/types.d.ts +905 -0
  123. package/dist/edge/p2p/federated/types.d.ts.map +1 -0
  124. package/dist/edge/p2p/federated/types.js +339 -0
  125. package/dist/edge/p2p/federated/types.js.map +1 -0
  126. package/dist/edge/p2p/index.d.ts +156 -0
  127. package/dist/edge/p2p/index.d.ts.map +1 -0
  128. package/dist/edge/p2p/index.js +242 -0
  129. package/dist/edge/p2p/index.js.map +1 -0
  130. package/dist/edge/p2p/nat/ConnectivityTester.d.ts +128 -0
  131. package/dist/edge/p2p/nat/ConnectivityTester.d.ts.map +1 -0
  132. package/dist/edge/p2p/nat/ConnectivityTester.js +560 -0
  133. package/dist/edge/p2p/nat/ConnectivityTester.js.map +1 -0
  134. package/dist/edge/p2p/nat/HolePuncher.d.ts +159 -0
  135. package/dist/edge/p2p/nat/HolePuncher.d.ts.map +1 -0
  136. package/dist/edge/p2p/nat/HolePuncher.js +569 -0
  137. package/dist/edge/p2p/nat/HolePuncher.js.map +1 -0
  138. package/dist/edge/p2p/nat/NATDetector.d.ts +109 -0
  139. package/dist/edge/p2p/nat/NATDetector.d.ts.map +1 -0
  140. package/dist/edge/p2p/nat/NATDetector.js +472 -0
  141. package/dist/edge/p2p/nat/NATDetector.js.map +1 -0
  142. package/dist/edge/p2p/nat/TURNManager.d.ts +158 -0
  143. package/dist/edge/p2p/nat/TURNManager.d.ts.map +1 -0
  144. package/dist/edge/p2p/nat/TURNManager.js +547 -0
  145. package/dist/edge/p2p/nat/TURNManager.js.map +1 -0
  146. package/dist/edge/p2p/nat/index.d.ts +74 -0
  147. package/dist/edge/p2p/nat/index.d.ts.map +1 -0
  148. package/dist/edge/p2p/nat/index.js +104 -0
  149. package/dist/edge/p2p/nat/index.js.map +1 -0
  150. package/dist/edge/p2p/nat/types.d.ts +583 -0
  151. package/dist/edge/p2p/nat/types.d.ts.map +1 -0
  152. package/dist/edge/p2p/nat/types.js +267 -0
  153. package/dist/edge/p2p/nat/types.js.map +1 -0
  154. package/dist/edge/p2p/protocol/AgentChannel.d.ts +333 -0
  155. package/dist/edge/p2p/protocol/AgentChannel.d.ts.map +1 -0
  156. package/dist/edge/p2p/protocol/AgentChannel.js +914 -0
  157. package/dist/edge/p2p/protocol/AgentChannel.js.map +1 -0
  158. package/dist/edge/p2p/protocol/MessageEncoder.d.ts +147 -0
  159. package/dist/edge/p2p/protocol/MessageEncoder.d.ts.map +1 -0
  160. package/dist/edge/p2p/protocol/MessageEncoder.js +738 -0
  161. package/dist/edge/p2p/protocol/MessageEncoder.js.map +1 -0
  162. package/dist/edge/p2p/protocol/MessageRouter.d.ts +266 -0
  163. package/dist/edge/p2p/protocol/MessageRouter.d.ts.map +1 -0
  164. package/dist/edge/p2p/protocol/MessageRouter.js +808 -0
  165. package/dist/edge/p2p/protocol/MessageRouter.js.map +1 -0
  166. package/dist/edge/p2p/protocol/ProtocolHandler.d.ts +309 -0
  167. package/dist/edge/p2p/protocol/ProtocolHandler.d.ts.map +1 -0
  168. package/dist/edge/p2p/protocol/ProtocolHandler.js +930 -0
  169. package/dist/edge/p2p/protocol/ProtocolHandler.js.map +1 -0
  170. package/dist/edge/p2p/protocol/index.d.ts +114 -0
  171. package/dist/edge/p2p/protocol/index.d.ts.map +1 -0
  172. package/dist/edge/p2p/protocol/index.js +206 -0
  173. package/dist/edge/p2p/protocol/index.js.map +1 -0
  174. package/dist/edge/p2p/protocol/types.d.ts +737 -0
  175. package/dist/edge/p2p/protocol/types.d.ts.map +1 -0
  176. package/dist/edge/p2p/protocol/types.js +490 -0
  177. package/dist/edge/p2p/protocol/types.js.map +1 -0
  178. package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts +284 -0
  179. package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts.map +1 -0
  180. package/dist/edge/p2p/sharing/PatternBroadcaster.js +644 -0
  181. package/dist/edge/p2p/sharing/PatternBroadcaster.js.map +1 -0
  182. package/dist/edge/p2p/sharing/PatternIndex.d.ts +168 -0
  183. package/dist/edge/p2p/sharing/PatternIndex.d.ts.map +1 -0
  184. package/dist/edge/p2p/sharing/PatternIndex.js +781 -0
  185. package/dist/edge/p2p/sharing/PatternIndex.js.map +1 -0
  186. package/dist/edge/p2p/sharing/PatternSerializer.d.ts +163 -0
  187. package/dist/edge/p2p/sharing/PatternSerializer.d.ts.map +1 -0
  188. package/dist/edge/p2p/sharing/PatternSerializer.js +696 -0
  189. package/dist/edge/p2p/sharing/PatternSerializer.js.map +1 -0
  190. package/dist/edge/p2p/sharing/PatternSyncManager.d.ts +242 -0
  191. package/dist/edge/p2p/sharing/PatternSyncManager.d.ts.map +1 -0
  192. package/dist/edge/p2p/sharing/PatternSyncManager.js +859 -0
  193. package/dist/edge/p2p/sharing/PatternSyncManager.js.map +1 -0
  194. package/dist/edge/p2p/sharing/index.d.ts +90 -0
  195. package/dist/edge/p2p/sharing/index.d.ts.map +1 -0
  196. package/dist/edge/p2p/sharing/index.js +152 -0
  197. package/dist/edge/p2p/sharing/index.js.map +1 -0
  198. package/dist/edge/p2p/sharing/types.d.ts +796 -0
  199. package/dist/edge/p2p/sharing/types.d.ts.map +1 -0
  200. package/dist/edge/p2p/sharing/types.js +264 -0
  201. package/dist/edge/p2p/sharing/types.js.map +1 -0
  202. package/dist/edge/p2p/webrtc/ConnectionPool.d.ts +218 -0
  203. package/dist/edge/p2p/webrtc/ConnectionPool.d.ts.map +1 -0
  204. package/dist/edge/p2p/webrtc/ConnectionPool.js +562 -0
  205. package/dist/edge/p2p/webrtc/ConnectionPool.js.map +1 -0
  206. package/dist/edge/p2p/webrtc/ICEManager.d.ts +171 -0
  207. package/dist/edge/p2p/webrtc/ICEManager.d.ts.map +1 -0
  208. package/dist/edge/p2p/webrtc/ICEManager.js +490 -0
  209. package/dist/edge/p2p/webrtc/ICEManager.js.map +1 -0
  210. package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts +159 -0
  211. package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts.map +1 -0
  212. package/dist/edge/p2p/webrtc/PeerConnectionManager.js +735 -0
  213. package/dist/edge/p2p/webrtc/PeerConnectionManager.js.map +1 -0
  214. package/dist/edge/p2p/webrtc/SignalingClient.d.ts +191 -0
  215. package/dist/edge/p2p/webrtc/SignalingClient.d.ts.map +1 -0
  216. package/dist/edge/p2p/webrtc/SignalingClient.js +608 -0
  217. package/dist/edge/p2p/webrtc/SignalingClient.js.map +1 -0
  218. package/dist/edge/p2p/webrtc/index.d.ts +158 -0
  219. package/dist/edge/p2p/webrtc/index.d.ts.map +1 -0
  220. package/dist/edge/p2p/webrtc/index.js +164 -0
  221. package/dist/edge/p2p/webrtc/index.js.map +1 -0
  222. package/dist/edge/p2p/webrtc/types.d.ts +665 -0
  223. package/dist/edge/p2p/webrtc/types.d.ts.map +1 -0
  224. package/dist/edge/p2p/webrtc/types.js +245 -0
  225. package/dist/edge/p2p/webrtc/types.js.map +1 -0
  226. package/dist/edge/server/AgentSpawnAPI.d.ts +98 -0
  227. package/dist/edge/server/AgentSpawnAPI.d.ts.map +1 -0
  228. package/dist/edge/server/AgentSpawnAPI.js +264 -0
  229. package/dist/edge/server/AgentSpawnAPI.js.map +1 -0
  230. package/dist/edge/server/SignalingServer.d.ts +71 -0
  231. package/dist/edge/server/SignalingServer.d.ts.map +1 -0
  232. package/dist/edge/server/SignalingServer.js +429 -0
  233. package/dist/edge/server/SignalingServer.js.map +1 -0
  234. package/dist/edge/server/index.d.ts +64 -0
  235. package/dist/edge/server/index.d.ts.map +1 -0
  236. package/dist/edge/server/index.js +318 -0
  237. package/dist/edge/server/index.js.map +1 -0
  238. package/dist/edge/types/browser-agent.types.d.ts +455 -0
  239. package/dist/edge/types/browser-agent.types.d.ts.map +1 -0
  240. package/dist/edge/types/browser-agent.types.js +116 -0
  241. package/dist/edge/types/browser-agent.types.js.map +1 -0
  242. package/dist/edge/types/index.d.ts +11 -0
  243. package/dist/edge/types/index.d.ts.map +1 -0
  244. package/dist/edge/types/index.js +17 -0
  245. package/dist/edge/types/index.js.map +1 -0
  246. package/dist/edge/types/storage.types.d.ts +207 -0
  247. package/dist/edge/types/storage.types.d.ts.map +1 -0
  248. package/dist/edge/types/storage.types.js +47 -0
  249. package/dist/edge/types/storage.types.js.map +1 -0
  250. package/dist/edge/wasm/shims.d.ts +224 -0
  251. package/dist/edge/wasm/shims.d.ts.map +1 -0
  252. package/dist/edge/wasm/shims.js +667 -0
  253. package/dist/edge/wasm/shims.js.map +1 -0
  254. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +33 -0
  255. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -0
  256. package/dist/mcp/handlers/NewDomainToolsHandler.js +305 -0
  257. package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -0
  258. package/dist/mcp/handlers/filtered/index.d.ts +15 -19
  259. package/dist/mcp/handlers/filtered/index.d.ts.map +1 -1
  260. package/dist/mcp/handlers/filtered/index.js +16 -27
  261. package/dist/mcp/handlers/filtered/index.js.map +1 -1
  262. package/dist/mcp/handlers/integration/index.d.ts +5 -4
  263. package/dist/mcp/handlers/integration/index.d.ts.map +1 -1
  264. package/dist/mcp/handlers/integration/index.js +7 -7
  265. package/dist/mcp/handlers/integration/index.js.map +1 -1
  266. package/dist/mcp/server-instructions.d.ts +1 -1
  267. package/dist/mcp/server-instructions.js +1 -1
  268. package/dist/mcp/server.d.ts.map +1 -1
  269. package/dist/mcp/server.js +14 -0
  270. package/dist/mcp/server.js.map +1 -1
  271. package/dist/mcp/tools.d.ts +8 -0
  272. package/dist/mcp/tools.d.ts.map +1 -1
  273. package/dist/mcp/tools.js +412 -1
  274. package/dist/mcp/tools.js.map +1 -1
  275. package/dist/planning/GOAPPlanner.d.ts +1 -0
  276. package/dist/planning/GOAPPlanner.d.ts.map +1 -1
  277. package/dist/planning/GOAPPlanner.js +12 -0
  278. package/dist/planning/GOAPPlanner.js.map +1 -1
  279. package/package.json +29 -8
  280. package/dist/alerting/AlertManager.d.ts +0 -120
  281. package/dist/alerting/AlertManager.d.ts.map +0 -1
  282. package/dist/alerting/AlertManager.js +0 -345
  283. package/dist/alerting/AlertManager.js.map +0 -1
  284. package/dist/alerting/FeedbackRouter.d.ts +0 -98
  285. package/dist/alerting/FeedbackRouter.d.ts.map +0 -1
  286. package/dist/alerting/FeedbackRouter.js +0 -331
  287. package/dist/alerting/FeedbackRouter.js.map +0 -1
  288. package/dist/alerting/StrategyApplicator.d.ts +0 -120
  289. package/dist/alerting/StrategyApplicator.d.ts.map +0 -1
  290. package/dist/alerting/StrategyApplicator.js +0 -299
  291. package/dist/alerting/StrategyApplicator.js.map +0 -1
  292. package/dist/alerting/index.d.ts +0 -68
  293. package/dist/alerting/index.d.ts.map +0 -1
  294. package/dist/alerting/index.js +0 -112
  295. package/dist/alerting/index.js.map +0 -1
  296. package/dist/alerting/types.d.ts +0 -118
  297. package/dist/alerting/types.d.ts.map +0 -1
  298. package/dist/alerting/types.js +0 -11
  299. package/dist/alerting/types.js.map +0 -1
  300. package/dist/cli/commands/fleet/backup.d.ts +0 -49
  301. package/dist/cli/commands/fleet/backup.d.ts.map +0 -1
  302. package/dist/cli/commands/fleet/backup.js +0 -88
  303. package/dist/cli/commands/fleet/backup.js.map +0 -1
  304. package/dist/cli/commands/fleet/health.d.ts +0 -154
  305. package/dist/cli/commands/fleet/health.d.ts.map +0 -1
  306. package/dist/cli/commands/fleet/health.js +0 -483
  307. package/dist/cli/commands/fleet/health.js.map +0 -1
  308. package/dist/cli/commands/fleet/init.d.ts +0 -11
  309. package/dist/cli/commands/fleet/init.d.ts.map +0 -1
  310. package/dist/cli/commands/fleet/init.js +0 -91
  311. package/dist/cli/commands/fleet/init.js.map +0 -1
  312. package/dist/cli/commands/fleet/logs.d.ts +0 -21
  313. package/dist/cli/commands/fleet/logs.d.ts.map +0 -1
  314. package/dist/cli/commands/fleet/logs.js +0 -267
  315. package/dist/cli/commands/fleet/logs.js.map +0 -1
  316. package/dist/cli/commands/fleet/metrics.d.ts +0 -27
  317. package/dist/cli/commands/fleet/metrics.d.ts.map +0 -1
  318. package/dist/cli/commands/fleet/metrics.js +0 -369
  319. package/dist/cli/commands/fleet/metrics.js.map +0 -1
  320. package/dist/cli/commands/fleet/monitor.d.ts +0 -18
  321. package/dist/cli/commands/fleet/monitor.d.ts.map +0 -1
  322. package/dist/cli/commands/fleet/monitor.js +0 -237
  323. package/dist/cli/commands/fleet/monitor.js.map +0 -1
  324. package/dist/cli/commands/fleet/optimize.d.ts +0 -42
  325. package/dist/cli/commands/fleet/optimize.d.ts.map +0 -1
  326. package/dist/cli/commands/fleet/optimize.js +0 -135
  327. package/dist/cli/commands/fleet/optimize.js.map +0 -1
  328. package/dist/cli/commands/fleet/recover.d.ts +0 -22
  329. package/dist/cli/commands/fleet/recover.d.ts.map +0 -1
  330. package/dist/cli/commands/fleet/recover.js +0 -99
  331. package/dist/cli/commands/fleet/recover.js.map +0 -1
  332. package/dist/cli/commands/fleet/restart.d.ts +0 -18
  333. package/dist/cli/commands/fleet/restart.d.ts.map +0 -1
  334. package/dist/cli/commands/fleet/restart.js +0 -290
  335. package/dist/cli/commands/fleet/restart.js.map +0 -1
  336. package/dist/cli/commands/fleet/scale.d.ts +0 -9
  337. package/dist/cli/commands/fleet/scale.d.ts.map +0 -1
  338. package/dist/cli/commands/fleet/scale.js +0 -77
  339. package/dist/cli/commands/fleet/scale.js.map +0 -1
  340. package/dist/cli/commands/fleet/shutdown.d.ts +0 -19
  341. package/dist/cli/commands/fleet/shutdown.d.ts.map +0 -1
  342. package/dist/cli/commands/fleet/shutdown.js +0 -307
  343. package/dist/cli/commands/fleet/shutdown.js.map +0 -1
  344. package/dist/cli/commands/fleet/status.d.ts +0 -10
  345. package/dist/cli/commands/fleet/status.d.ts.map +0 -1
  346. package/dist/cli/commands/fleet/status.js +0 -97
  347. package/dist/cli/commands/fleet/status.js.map +0 -1
  348. package/dist/cli/commands/fleet/topology.d.ts +0 -23
  349. package/dist/cli/commands/fleet/topology.d.ts.map +0 -1
  350. package/dist/cli/commands/fleet/topology.js +0 -376
  351. package/dist/cli/commands/fleet/topology.js.map +0 -1
  352. package/dist/cli/commands/monitor/alerts.d.ts +0 -45
  353. package/dist/cli/commands/monitor/alerts.d.ts.map +0 -1
  354. package/dist/cli/commands/monitor/alerts.js +0 -168
  355. package/dist/cli/commands/monitor/alerts.js.map +0 -1
  356. package/dist/cli/commands/monitor/analyze.d.ts +0 -49
  357. package/dist/cli/commands/monitor/analyze.d.ts.map +0 -1
  358. package/dist/cli/commands/monitor/analyze.js +0 -209
  359. package/dist/cli/commands/monitor/analyze.js.map +0 -1
  360. package/dist/cli/commands/monitor/compare.d.ts +0 -38
  361. package/dist/cli/commands/monitor/compare.d.ts.map +0 -1
  362. package/dist/cli/commands/monitor/compare.js +0 -177
  363. package/dist/cli/commands/monitor/compare.js.map +0 -1
  364. package/dist/cli/commands/monitor/dashboard.d.ts +0 -34
  365. package/dist/cli/commands/monitor/dashboard.d.ts.map +0 -1
  366. package/dist/cli/commands/monitor/dashboard.js +0 -157
  367. package/dist/cli/commands/monitor/dashboard.js.map +0 -1
  368. package/dist/cli/commands/monitor/export.d.ts +0 -36
  369. package/dist/cli/commands/monitor/export.d.ts.map +0 -1
  370. package/dist/cli/commands/monitor/export.js +0 -157
  371. package/dist/cli/commands/monitor/export.js.map +0 -1
  372. package/dist/cli/commands/monitor/index.d.ts +0 -11
  373. package/dist/cli/commands/monitor/index.d.ts.map +0 -1
  374. package/dist/cli/commands/monitor/index.js +0 -14
  375. package/dist/cli/commands/monitor/index.js.map +0 -1
  376. package/dist/cli/commands/quality/baseline.d.ts +0 -27
  377. package/dist/cli/commands/quality/baseline.d.ts.map +0 -1
  378. package/dist/cli/commands/quality/baseline.js +0 -124
  379. package/dist/cli/commands/quality/baseline.js.map +0 -1
  380. package/dist/cli/commands/quality/compare.d.ts +0 -36
  381. package/dist/cli/commands/quality/compare.d.ts.map +0 -1
  382. package/dist/cli/commands/quality/compare.js +0 -136
  383. package/dist/cli/commands/quality/compare.js.map +0 -1
  384. package/dist/cli/commands/quality/decision.d.ts +0 -81
  385. package/dist/cli/commands/quality/decision.d.ts.map +0 -1
  386. package/dist/cli/commands/quality/decision.js +0 -319
  387. package/dist/cli/commands/quality/decision.js.map +0 -1
  388. package/dist/cli/commands/quality/gate.d.ts +0 -47
  389. package/dist/cli/commands/quality/gate.d.ts.map +0 -1
  390. package/dist/cli/commands/quality/gate.js +0 -205
  391. package/dist/cli/commands/quality/gate.js.map +0 -1
  392. package/dist/cli/commands/quality/index.d.ts +0 -17
  393. package/dist/cli/commands/quality/index.d.ts.map +0 -1
  394. package/dist/cli/commands/quality/index.js +0 -41
  395. package/dist/cli/commands/quality/index.js.map +0 -1
  396. package/dist/cli/commands/quality/policy.d.ts +0 -57
  397. package/dist/cli/commands/quality/policy.d.ts.map +0 -1
  398. package/dist/cli/commands/quality/policy.js +0 -359
  399. package/dist/cli/commands/quality/policy.js.map +0 -1
  400. package/dist/cli/commands/quality/risk.d.ts +0 -41
  401. package/dist/cli/commands/quality/risk.d.ts.map +0 -1
  402. package/dist/cli/commands/quality/risk.js +0 -255
  403. package/dist/cli/commands/quality/risk.js.map +0 -1
  404. package/dist/cli/commands/quality/trends.d.ts +0 -40
  405. package/dist/cli/commands/quality/trends.d.ts.map +0 -1
  406. package/dist/cli/commands/quality/trends.js +0 -122
  407. package/dist/cli/commands/quality/trends.js.map +0 -1
  408. package/dist/cli/commands/quality/validate.d.ts +0 -44
  409. package/dist/cli/commands/quality/validate.d.ts.map +0 -1
  410. package/dist/cli/commands/quality/validate.js +0 -234
  411. package/dist/cli/commands/quality/validate.js.map +0 -1
  412. package/dist/cli/commands/test/analyze-failures.d.ts +0 -39
  413. package/dist/cli/commands/test/analyze-failures.d.ts.map +0 -1
  414. package/dist/cli/commands/test/analyze-failures.js +0 -113
  415. package/dist/cli/commands/test/analyze-failures.js.map +0 -1
  416. package/dist/cli/commands/test/clean.d.ts +0 -3
  417. package/dist/cli/commands/test/clean.d.ts.map +0 -1
  418. package/dist/cli/commands/test/clean.js +0 -148
  419. package/dist/cli/commands/test/clean.js.map +0 -1
  420. package/dist/cli/commands/test/debug.d.ts +0 -3
  421. package/dist/cli/commands/test/debug.d.ts.map +0 -1
  422. package/dist/cli/commands/test/debug.js +0 -167
  423. package/dist/cli/commands/test/debug.js.map +0 -1
  424. package/dist/cli/commands/test/diff.d.ts +0 -3
  425. package/dist/cli/commands/test/diff.d.ts.map +0 -1
  426. package/dist/cli/commands/test/diff.js +0 -195
  427. package/dist/cli/commands/test/diff.js.map +0 -1
  428. package/dist/cli/commands/test/flakiness.d.ts +0 -32
  429. package/dist/cli/commands/test/flakiness.d.ts.map +0 -1
  430. package/dist/cli/commands/test/flakiness.js +0 -121
  431. package/dist/cli/commands/test/flakiness.js.map +0 -1
  432. package/dist/cli/commands/test/index.d.ts +0 -17
  433. package/dist/cli/commands/test/index.d.ts.map +0 -1
  434. package/dist/cli/commands/test/index.js +0 -45
  435. package/dist/cli/commands/test/index.js.map +0 -1
  436. package/dist/cli/commands/test/mutate.d.ts +0 -29
  437. package/dist/cli/commands/test/mutate.d.ts.map +0 -1
  438. package/dist/cli/commands/test/mutate.js +0 -163
  439. package/dist/cli/commands/test/mutate.js.map +0 -1
  440. package/dist/cli/commands/test/parallel.d.ts +0 -3
  441. package/dist/cli/commands/test/parallel.d.ts.map +0 -1
  442. package/dist/cli/commands/test/parallel.js +0 -117
  443. package/dist/cli/commands/test/parallel.js.map +0 -1
  444. package/dist/cli/commands/test/profile.d.ts +0 -3
  445. package/dist/cli/commands/test/profile.d.ts.map +0 -1
  446. package/dist/cli/commands/test/profile.js +0 -156
  447. package/dist/cli/commands/test/profile.js.map +0 -1
  448. package/dist/cli/commands/test/queue.d.ts +0 -3
  449. package/dist/cli/commands/test/queue.d.ts.map +0 -1
  450. package/dist/cli/commands/test/queue.js +0 -140
  451. package/dist/cli/commands/test/queue.js.map +0 -1
  452. package/dist/cli/commands/test/retry.d.ts +0 -3
  453. package/dist/cli/commands/test/retry.d.ts.map +0 -1
  454. package/dist/cli/commands/test/retry.js +0 -105
  455. package/dist/cli/commands/test/retry.js.map +0 -1
  456. package/dist/cli/commands/test/snapshot.d.ts +0 -3
  457. package/dist/cli/commands/test/snapshot.d.ts.map +0 -1
  458. package/dist/cli/commands/test/snapshot.js +0 -176
  459. package/dist/cli/commands/test/snapshot.js.map +0 -1
  460. package/dist/cli/commands/test/trace.d.ts +0 -3
  461. package/dist/cli/commands/test/trace.d.ts.map +0 -1
  462. package/dist/cli/commands/test/trace.js +0 -137
  463. package/dist/cli/commands/test/trace.js.map +0 -1
  464. package/dist/cli/commands/test/watch.d.ts +0 -3
  465. package/dist/cli/commands/test/watch.d.ts.map +0 -1
  466. package/dist/cli/commands/test/watch.js +0 -130
  467. package/dist/cli/commands/test/watch.js.map +0 -1
  468. package/dist/cli/index-spec.d.ts +0 -3
  469. package/dist/cli/index-spec.d.ts.map +0 -1
  470. package/dist/cli/index-spec.js +0 -154
  471. package/dist/cli/index-spec.js.map +0 -1
  472. package/dist/cli/index-working.d.ts +0 -7
  473. package/dist/cli/index-working.d.ts.map +0 -1
  474. package/dist/cli/index-working.js +0 -617
  475. package/dist/cli/index-working.js.map +0 -1
  476. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts +0 -83
  477. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts.map +0 -1
  478. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js +0 -130
  479. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js.map +0 -1
  480. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts +0 -58
  481. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts.map +0 -1
  482. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js +0 -84
  483. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js.map +0 -1
  484. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts +0 -54
  485. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts.map +0 -1
  486. package/dist/mcp/handlers/filtered/security-scanner-filtered.js +0 -73
  487. package/dist/mcp/handlers/filtered/security-scanner-filtered.js.map +0 -1
  488. package/dist/mcp/handlers/integration/contract-validate.d.ts +0 -10
  489. package/dist/mcp/handlers/integration/contract-validate.d.ts.map +0 -1
  490. package/dist/mcp/handlers/integration/contract-validate.js +0 -348
  491. package/dist/mcp/handlers/integration/contract-validate.js.map +0 -1
  492. package/dist/reporting/ResultAggregator.d.ts +0 -107
  493. package/dist/reporting/ResultAggregator.d.ts.map +0 -1
  494. package/dist/reporting/ResultAggregator.js +0 -435
  495. package/dist/reporting/ResultAggregator.js.map +0 -1
  496. package/dist/reporting/index.d.ts +0 -48
  497. package/dist/reporting/index.d.ts.map +0 -1
  498. package/dist/reporting/index.js +0 -154
  499. package/dist/reporting/index.js.map +0 -1
  500. package/dist/reporting/reporters/ControlLoopReporter.d.ts +0 -128
  501. package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +0 -1
  502. package/dist/reporting/reporters/ControlLoopReporter.js +0 -417
  503. package/dist/reporting/reporters/ControlLoopReporter.js.map +0 -1
  504. package/dist/reporting/reporters/HumanReadableReporter.d.ts +0 -140
  505. package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +0 -1
  506. package/dist/reporting/reporters/HumanReadableReporter.js +0 -524
  507. package/dist/reporting/reporters/HumanReadableReporter.js.map +0 -1
  508. package/dist/reporting/reporters/JSONReporter.d.ts +0 -251
  509. package/dist/reporting/reporters/JSONReporter.d.ts.map +0 -1
  510. package/dist/reporting/reporters/JSONReporter.js +0 -325
  511. package/dist/reporting/reporters/JSONReporter.js.map +0 -1
  512. package/dist/reporting/reporters/index.d.ts +0 -14
  513. package/dist/reporting/reporters/index.d.ts.map +0 -1
  514. package/dist/reporting/reporters/index.js +0 -19
  515. package/dist/reporting/reporters/index.js.map +0 -1
  516. package/dist/reporting/types.d.ts +0 -427
  517. package/dist/reporting/types.d.ts.map +0 -1
  518. package/dist/reporting/types.js +0 -12
  519. package/dist/reporting/types.js.map +0 -1
@@ -0,0 +1,783 @@
1
+ "use strict";
2
+ /**
3
+ * Sync Orchestrator for Pattern Synchronization
4
+ *
5
+ * Orchestrates pattern synchronization between peers including
6
+ * initial sync, incremental updates, conflict resolution, and progress tracking.
7
+ *
8
+ * @module edge/p2p/coordination/SyncOrchestrator
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SyncOrchestrator = void 0;
13
+ exports.createSyncOrchestrator = createSyncOrchestrator;
14
+ const types_1 = require("./types");
15
+ // ============================================
16
+ // Sync Orchestrator Class
17
+ // ============================================
18
+ /**
19
+ * SyncOrchestrator - Orchestrates pattern synchronization
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * const orchestrator = new SyncOrchestrator({
24
+ * localAgentId: 'local',
25
+ * peerId: 'peer-123',
26
+ * config: syncConfig,
27
+ * sendMessage: async (msg) => await channel.send(msg),
28
+ * onSyncProgress: (status) => console.log('Progress:', status.progressPercent),
29
+ * });
30
+ *
31
+ * // Start sync with local patterns
32
+ * const result = await orchestrator.startSync(localPatterns);
33
+ * console.log('Synced:', result.syncedPatterns);
34
+ *
35
+ * // Handle incoming sync messages
36
+ * orchestrator.handleMessage(message);
37
+ * ```
38
+ */
39
+ class SyncOrchestrator {
40
+ /**
41
+ * Create a new SyncOrchestrator
42
+ */
43
+ constructor(config) {
44
+ // Local pattern storage for sync
45
+ this.localPatterns = new Map();
46
+ this.localVectorClocks = new Map();
47
+ this.pendingRequests = new Map();
48
+ this.isRunning = false;
49
+ this.localAgentId = config.localAgentId;
50
+ this.peerId = config.peerId;
51
+ this.config = config.config;
52
+ this.sendMessage = config.sendMessage;
53
+ this.onSyncProgress = config.onSyncProgress;
54
+ this.onConflict = config.onConflict;
55
+ this.onPatternReceived = config.onPatternReceived;
56
+ this.currentStatus = (0, types_1.createDefaultSyncStatus)();
57
+ this.log = config.enableLogging
58
+ ? (...args) => console.log(`[SyncOrchestrator:${this.peerId}]`, ...args)
59
+ : () => { };
60
+ }
61
+ // ============================================
62
+ // Public API
63
+ // ============================================
64
+ /**
65
+ * Start a sync operation
66
+ *
67
+ * @param patterns - Local patterns to sync
68
+ * @returns Promise resolving to final sync status
69
+ */
70
+ async startSync(patterns) {
71
+ if (this.activeSession) {
72
+ throw new types_1.CoordinationError('Sync already in progress', types_1.CoordinationErrorCode.SYNC_FAILED, this.peerId);
73
+ }
74
+ // Store local patterns
75
+ if (patterns) {
76
+ for (const pattern of patterns) {
77
+ this.localPatterns.set(pattern.id, pattern);
78
+ this.localVectorClocks.set(pattern.id, pattern.version.vectorClock);
79
+ }
80
+ }
81
+ this.log(`Starting sync with ${this.localPatterns.size} local patterns`);
82
+ // Create sync session
83
+ const sessionId = (0, types_1.generateMessageId)();
84
+ const startedAt = Date.now();
85
+ this.currentStatus = {
86
+ state: 'syncing',
87
+ totalPatterns: this.localPatterns.size,
88
+ syncedPatterns: 0,
89
+ pendingPatterns: this.localPatterns.size,
90
+ conflicts: 0,
91
+ conflictsResolved: 0,
92
+ startedAt: new Date(startedAt).toISOString(),
93
+ progressPercent: 0,
94
+ direction: 'bidirectional',
95
+ bytesTransferred: 0,
96
+ patternsPerSecond: 0,
97
+ };
98
+ this.onSyncProgress(this.currentStatus);
99
+ return new Promise((resolve, reject) => {
100
+ const timeout = setTimeout(() => {
101
+ this.handleSyncTimeout(sessionId);
102
+ }, this.config.syncTimeout);
103
+ this.activeSession = {
104
+ sessionId,
105
+ direction: 'pull',
106
+ startedAt,
107
+ patterns: patterns ?? [],
108
+ syncedPatterns: [],
109
+ currentBatch: 0,
110
+ totalBatches: 0,
111
+ conflicts: [],
112
+ resolvedConflicts: 0,
113
+ resolve,
114
+ reject,
115
+ timeout,
116
+ };
117
+ // Send sync request
118
+ this.sendSyncRequest(sessionId).catch((error) => {
119
+ this.log('Failed to send sync request:', error);
120
+ this.completeSync(false, error.message);
121
+ });
122
+ });
123
+ }
124
+ /**
125
+ * Request specific patterns
126
+ */
127
+ async requestPatterns(patternIds) {
128
+ const sessionId = (0, types_1.generateMessageId)();
129
+ const payload = {
130
+ requestId: sessionId,
131
+ patternIds,
132
+ includeContent: true,
133
+ batchSize: this.config.batchSize,
134
+ };
135
+ await this.sendMessage({
136
+ type: types_1.CoordinationMessageType.SYNC_REQUEST,
137
+ messageId: (0, types_1.generateMessageId)(),
138
+ senderId: this.localAgentId,
139
+ payload,
140
+ timestamp: Date.now(),
141
+ });
142
+ return new Promise((resolve, reject) => {
143
+ const timeout = setTimeout(() => {
144
+ this.pendingRequests.delete(sessionId);
145
+ reject(new Error('Pattern request timeout'));
146
+ }, this.config.syncTimeout);
147
+ const session = {
148
+ sessionId,
149
+ direction: 'pull',
150
+ startedAt: Date.now(),
151
+ patterns: [],
152
+ syncedPatterns: [],
153
+ currentBatch: 0,
154
+ totalBatches: 0,
155
+ conflicts: [],
156
+ resolvedConflicts: 0,
157
+ resolve: (status) => {
158
+ const receivedPatterns = Array.from(this.localPatterns.values())
159
+ .filter((p) => patternIds.includes(p.id));
160
+ resolve(receivedPatterns);
161
+ },
162
+ reject,
163
+ timeout,
164
+ };
165
+ this.pendingRequests.set(sessionId, session);
166
+ });
167
+ }
168
+ /**
169
+ * Push patterns to peer
170
+ */
171
+ async pushPatterns(patterns) {
172
+ if (patterns.length === 0) {
173
+ return;
174
+ }
175
+ this.log(`Pushing ${patterns.length} patterns`);
176
+ const batchSize = this.config.batchSize;
177
+ const totalBatches = Math.ceil(patterns.length / batchSize);
178
+ const requestId = (0, types_1.generateMessageId)();
179
+ for (let i = 0; i < totalBatches; i++) {
180
+ const start = i * batchSize;
181
+ const end = Math.min(start + batchSize, patterns.length);
182
+ const batch = patterns.slice(start, end);
183
+ const payload = {
184
+ batchId: (0, types_1.generateMessageId)(),
185
+ requestId,
186
+ patterns: batch,
187
+ batchNumber: i + 1,
188
+ totalBatches,
189
+ isFinal: i === totalBatches - 1,
190
+ };
191
+ await this.sendMessage({
192
+ type: types_1.CoordinationMessageType.PATTERN_BATCH,
193
+ messageId: (0, types_1.generateMessageId)(),
194
+ senderId: this.localAgentId,
195
+ payload,
196
+ timestamp: Date.now(),
197
+ });
198
+ // Update status
199
+ this.updateProgress({
200
+ syncedPatterns: this.currentStatus.syncedPatterns + batch.length,
201
+ bytesTransferred: this.currentStatus.bytesTransferred + JSON.stringify(batch).length,
202
+ direction: 'push',
203
+ });
204
+ }
205
+ }
206
+ /**
207
+ * Handle incoming sync message
208
+ */
209
+ async handleMessage(message) {
210
+ switch (message.type) {
211
+ case types_1.CoordinationMessageType.SYNC_REQUEST:
212
+ await this.handleSyncRequest(message.payload);
213
+ break;
214
+ case types_1.CoordinationMessageType.SYNC_RESPONSE:
215
+ await this.handleSyncResponse(message.payload);
216
+ break;
217
+ case types_1.CoordinationMessageType.PATTERN_BATCH:
218
+ await this.handlePatternBatch(message.payload);
219
+ break;
220
+ case types_1.CoordinationMessageType.SYNC_COMPLETE:
221
+ await this.handleSyncComplete(message.payload);
222
+ break;
223
+ case types_1.CoordinationMessageType.CONFLICT:
224
+ await this.handleConflictMessage(message.payload);
225
+ break;
226
+ }
227
+ }
228
+ /**
229
+ * Get current sync status
230
+ */
231
+ getStatus() {
232
+ return { ...this.currentStatus };
233
+ }
234
+ /**
235
+ * Check if sync is in progress
236
+ */
237
+ isSyncing() {
238
+ return this.currentStatus.state === 'syncing';
239
+ }
240
+ /**
241
+ * Start periodic sync
242
+ */
243
+ startPeriodicSync(patterns) {
244
+ if (this.config.syncInterval <= 0) {
245
+ return;
246
+ }
247
+ this.isRunning = true;
248
+ // Store patterns for periodic sync
249
+ for (const pattern of patterns) {
250
+ this.localPatterns.set(pattern.id, pattern);
251
+ }
252
+ this.syncInterval = setInterval(async () => {
253
+ if (!this.activeSession && this.isRunning) {
254
+ try {
255
+ await this.startSync(Array.from(this.localPatterns.values()));
256
+ }
257
+ catch (error) {
258
+ this.log('Periodic sync failed:', error);
259
+ }
260
+ }
261
+ }, this.config.syncInterval);
262
+ }
263
+ /**
264
+ * Stop the orchestrator
265
+ */
266
+ stop() {
267
+ this.isRunning = false;
268
+ if (this.syncInterval) {
269
+ clearInterval(this.syncInterval);
270
+ this.syncInterval = undefined;
271
+ }
272
+ // Cancel active session
273
+ if (this.activeSession) {
274
+ clearTimeout(this.activeSession.timeout);
275
+ this.activeSession.reject(new Error('Sync cancelled'));
276
+ this.activeSession = undefined;
277
+ }
278
+ // Cancel pending requests
279
+ this.pendingRequests.forEach((session) => {
280
+ clearTimeout(session.timeout);
281
+ session.reject(new Error('Sync cancelled'));
282
+ });
283
+ this.pendingRequests.clear();
284
+ }
285
+ /**
286
+ * Add or update local pattern
287
+ */
288
+ addLocalPattern(pattern) {
289
+ this.localPatterns.set(pattern.id, pattern);
290
+ this.localVectorClocks.set(pattern.id, pattern.version.vectorClock);
291
+ }
292
+ /**
293
+ * Remove local pattern
294
+ */
295
+ removeLocalPattern(patternId) {
296
+ this.localPatterns.delete(patternId);
297
+ this.localVectorClocks.delete(patternId);
298
+ }
299
+ /**
300
+ * Get received patterns
301
+ */
302
+ getReceivedPatterns() {
303
+ return this.activeSession?.syncedPatterns ?? [];
304
+ }
305
+ // ============================================
306
+ // Private - Message Handlers
307
+ // ============================================
308
+ async handleSyncRequest(payload) {
309
+ this.log(`Received sync request: ${payload.requestId}`);
310
+ // Determine patterns to send
311
+ let patternsToSend = [];
312
+ const conflicts = [];
313
+ if (payload.patternIds) {
314
+ // Specific patterns requested
315
+ patternsToSend = payload.patternIds
316
+ .map((id) => this.localPatterns.get(id))
317
+ .filter((p) => p !== undefined);
318
+ }
319
+ else {
320
+ // All patterns or query-based
321
+ patternsToSend = Array.from(this.localPatterns.values());
322
+ // Apply query filters if provided
323
+ if (payload.query) {
324
+ patternsToSend = this.applyQueryFilters(patternsToSend, payload.query);
325
+ }
326
+ // Check for conflicts using vector clocks
327
+ if (payload.vectorClocks && this.config.incrementalSync) {
328
+ const { toSend, conflictsFound } = this.checkForConflicts(patternsToSend, payload.vectorClocks);
329
+ patternsToSend = toSend;
330
+ conflicts.push(...conflictsFound);
331
+ }
332
+ }
333
+ // Limit patterns
334
+ if (patternsToSend.length > this.config.maxPatternsPerSync) {
335
+ patternsToSend = patternsToSend.slice(0, this.config.maxPatternsPerSync);
336
+ }
337
+ // Collect vector clocks
338
+ const vectorClocks = {};
339
+ for (const pattern of patternsToSend) {
340
+ vectorClocks[pattern.id] = pattern.version.vectorClock;
341
+ }
342
+ // Calculate batches
343
+ const batchSize = Math.min(payload.batchSize, this.config.batchSize);
344
+ const totalBatches = Math.ceil(patternsToSend.length / batchSize);
345
+ // Send first batch as response
346
+ const firstBatch = patternsToSend.slice(0, batchSize);
347
+ const hasMore = patternsToSend.length > batchSize;
348
+ const response = {
349
+ requestId: payload.requestId,
350
+ patterns: firstBatch,
351
+ conflicts: conflicts.length > 0 ? conflicts : undefined,
352
+ vectorClocks,
353
+ totalPatterns: patternsToSend.length,
354
+ hasMore,
355
+ continuationToken: hasMore ? this.generateContinuationToken(payload.requestId, 1) : undefined,
356
+ batchNumber: 1,
357
+ totalBatches,
358
+ };
359
+ await this.sendMessage({
360
+ type: types_1.CoordinationMessageType.SYNC_RESPONSE,
361
+ messageId: (0, types_1.generateMessageId)(),
362
+ correlationId: payload.requestId,
363
+ senderId: this.localAgentId,
364
+ payload: response,
365
+ timestamp: Date.now(),
366
+ });
367
+ // Send remaining batches
368
+ if (hasMore) {
369
+ await this.sendRemainingBatches(payload.requestId, patternsToSend.slice(batchSize), 2, totalBatches);
370
+ }
371
+ }
372
+ async handleSyncResponse(payload) {
373
+ const session = this.activeSession ?? this.pendingRequests.get(payload.requestId);
374
+ if (!session) {
375
+ this.log(`Received response for unknown request: ${payload.requestId}`);
376
+ return;
377
+ }
378
+ this.log(`Received sync response: batch ${payload.batchNumber}/${payload.totalBatches}`);
379
+ // Process received patterns
380
+ for (const pattern of payload.patterns) {
381
+ if (this.config.validatePatterns && !this.validatePattern(pattern)) {
382
+ this.log(`Invalid pattern received: ${pattern.id}`);
383
+ continue;
384
+ }
385
+ session.syncedPatterns.push(pattern);
386
+ this.localPatterns.set(pattern.id, pattern);
387
+ this.localVectorClocks.set(pattern.id, pattern.version.vectorClock);
388
+ this.onPatternReceived?.(pattern);
389
+ }
390
+ // Track conflicts
391
+ if (payload.conflicts) {
392
+ session.conflicts.push(...payload.conflicts);
393
+ for (const conflict of payload.conflicts) {
394
+ this.onConflict?.(conflict);
395
+ }
396
+ }
397
+ session.currentBatch = payload.batchNumber;
398
+ session.totalBatches = payload.totalBatches;
399
+ // Update progress
400
+ this.updateProgress({
401
+ syncedPatterns: session.syncedPatterns.length,
402
+ pendingPatterns: payload.totalPatterns - session.syncedPatterns.length,
403
+ conflicts: session.conflicts.length,
404
+ totalPatterns: payload.totalPatterns,
405
+ bytesTransferred: this.currentStatus.bytesTransferred + JSON.stringify(payload.patterns).length,
406
+ });
407
+ // Check if sync is complete
408
+ if (!payload.hasMore && payload.batchNumber === payload.totalBatches) {
409
+ // Resolve conflicts
410
+ await this.resolveConflicts(session);
411
+ // Send sync complete
412
+ await this.sendSyncComplete(session, true);
413
+ this.completeSync(true);
414
+ }
415
+ }
416
+ async handlePatternBatch(payload) {
417
+ this.log(`Received pattern batch: ${payload.batchNumber}/${payload.totalBatches}`);
418
+ // Process patterns
419
+ for (const pattern of payload.patterns) {
420
+ if (this.config.validatePatterns && !this.validatePattern(pattern)) {
421
+ continue;
422
+ }
423
+ // Check for conflicts
424
+ const existingPattern = this.localPatterns.get(pattern.id);
425
+ if (existingPattern) {
426
+ const conflict = this.detectConflict(existingPattern, pattern);
427
+ if (conflict) {
428
+ const resolution = this.resolveConflict(conflict);
429
+ if (resolution.resolvedPattern) {
430
+ this.localPatterns.set(pattern.id, resolution.resolvedPattern);
431
+ }
432
+ this.onConflict?.(conflict);
433
+ continue;
434
+ }
435
+ }
436
+ this.localPatterns.set(pattern.id, pattern);
437
+ this.localVectorClocks.set(pattern.id, pattern.version.vectorClock);
438
+ this.onPatternReceived?.(pattern);
439
+ }
440
+ // Update progress
441
+ this.updateProgress({
442
+ syncedPatterns: this.currentStatus.syncedPatterns + payload.patterns.length,
443
+ bytesTransferred: this.currentStatus.bytesTransferred + JSON.stringify(payload.patterns).length,
444
+ });
445
+ // Check if this is the final batch
446
+ if (payload.isFinal) {
447
+ if (this.activeSession) {
448
+ await this.sendSyncComplete(this.activeSession, true);
449
+ this.completeSync(true);
450
+ }
451
+ }
452
+ }
453
+ async handleSyncComplete(payload) {
454
+ this.log(`Sync complete: ${payload.success ? 'success' : 'failed'}`);
455
+ if (!payload.success && this.activeSession) {
456
+ this.completeSync(false, payload.error);
457
+ return;
458
+ }
459
+ // If we were the responder, sync is now complete
460
+ const session = this.pendingRequests.get(payload.requestId);
461
+ if (session) {
462
+ clearTimeout(session.timeout);
463
+ this.pendingRequests.delete(payload.requestId);
464
+ const finalStatus = {
465
+ ...this.currentStatus,
466
+ state: 'completed',
467
+ completedAt: new Date().toISOString(),
468
+ conflictsResolved: session.resolvedConflicts,
469
+ };
470
+ session.resolve(finalStatus);
471
+ }
472
+ }
473
+ async handleConflictMessage(conflict) {
474
+ this.log(`Received conflict notification: ${conflict.patternId}`);
475
+ if (this.activeSession) {
476
+ this.activeSession.conflicts.push(conflict);
477
+ }
478
+ this.onConflict?.(conflict);
479
+ // Resolve conflict
480
+ const resolution = this.resolveConflict(conflict);
481
+ if (resolution.resolvedPattern) {
482
+ this.localPatterns.set(conflict.patternId, resolution.resolvedPattern);
483
+ }
484
+ }
485
+ // ============================================
486
+ // Private - Sync Operations
487
+ // ============================================
488
+ async sendSyncRequest(sessionId) {
489
+ const vectorClocks = {};
490
+ if (this.config.incrementalSync) {
491
+ this.localVectorClocks.forEach((clock, id) => {
492
+ vectorClocks[id] = clock;
493
+ });
494
+ }
495
+ const payload = {
496
+ requestId: sessionId,
497
+ vectorClocks: Object.keys(vectorClocks).length > 0 ? vectorClocks : undefined,
498
+ includeContent: true,
499
+ batchSize: this.config.batchSize,
500
+ };
501
+ await this.sendMessage({
502
+ type: types_1.CoordinationMessageType.SYNC_REQUEST,
503
+ messageId: (0, types_1.generateMessageId)(),
504
+ senderId: this.localAgentId,
505
+ payload,
506
+ timestamp: Date.now(),
507
+ });
508
+ }
509
+ async sendRemainingBatches(requestId, patterns, startBatch, totalBatches) {
510
+ const batchSize = this.config.batchSize;
511
+ let batchNumber = startBatch;
512
+ for (let i = 0; i < patterns.length; i += batchSize) {
513
+ const batch = patterns.slice(i, i + batchSize);
514
+ const isFinal = batchNumber === totalBatches;
515
+ const payload = {
516
+ batchId: (0, types_1.generateMessageId)(),
517
+ requestId,
518
+ patterns: batch,
519
+ batchNumber,
520
+ totalBatches,
521
+ isFinal,
522
+ };
523
+ await this.sendMessage({
524
+ type: types_1.CoordinationMessageType.PATTERN_BATCH,
525
+ messageId: (0, types_1.generateMessageId)(),
526
+ senderId: this.localAgentId,
527
+ payload,
528
+ timestamp: Date.now(),
529
+ });
530
+ batchNumber++;
531
+ }
532
+ }
533
+ async sendSyncComplete(session, success) {
534
+ const durationMs = Date.now() - session.startedAt;
535
+ const payload = {
536
+ requestId: session.sessionId,
537
+ totalPatterns: session.syncedPatterns.length,
538
+ conflictsResolved: session.resolvedConflicts,
539
+ durationMs,
540
+ success,
541
+ };
542
+ await this.sendMessage({
543
+ type: types_1.CoordinationMessageType.SYNC_COMPLETE,
544
+ messageId: (0, types_1.generateMessageId)(),
545
+ senderId: this.localAgentId,
546
+ payload,
547
+ timestamp: Date.now(),
548
+ });
549
+ }
550
+ completeSync(success, error) {
551
+ if (!this.activeSession) {
552
+ return;
553
+ }
554
+ clearTimeout(this.activeSession.timeout);
555
+ const durationMs = Date.now() - this.activeSession.startedAt;
556
+ const patternsPerSecond = durationMs > 0
557
+ ? (this.activeSession.syncedPatterns.length / durationMs) * 1000
558
+ : 0;
559
+ const finalStatus = {
560
+ state: success ? 'completed' : 'failed',
561
+ totalPatterns: this.activeSession.syncedPatterns.length + this.activeSession.conflicts.length,
562
+ syncedPatterns: this.activeSession.syncedPatterns.length,
563
+ pendingPatterns: 0,
564
+ conflicts: this.activeSession.conflicts.length,
565
+ conflictsResolved: this.activeSession.resolvedConflicts,
566
+ startedAt: new Date(this.activeSession.startedAt).toISOString(),
567
+ completedAt: new Date().toISOString(),
568
+ progressPercent: 100,
569
+ estimatedTimeRemaining: 0,
570
+ lastError: error,
571
+ direction: this.activeSession.direction,
572
+ bytesTransferred: this.currentStatus.bytesTransferred,
573
+ patternsPerSecond,
574
+ };
575
+ this.currentStatus = finalStatus;
576
+ this.onSyncProgress(finalStatus);
577
+ if (success) {
578
+ this.activeSession.resolve(finalStatus);
579
+ }
580
+ else {
581
+ this.activeSession.reject(new Error(error ?? 'Sync failed'));
582
+ }
583
+ this.activeSession = undefined;
584
+ }
585
+ handleSyncTimeout(sessionId) {
586
+ if (this.activeSession?.sessionId === sessionId) {
587
+ this.log('Sync timeout');
588
+ this.completeSync(false, 'Sync timeout');
589
+ }
590
+ }
591
+ // ============================================
592
+ // Private - Conflict Resolution
593
+ // ============================================
594
+ checkForConflicts(patterns, remoteClocks) {
595
+ const toSend = [];
596
+ const conflictsFound = [];
597
+ for (const pattern of patterns) {
598
+ const remoteClock = remoteClocks[pattern.id];
599
+ if (!remoteClock) {
600
+ // Remote doesn't have this pattern, send it
601
+ toSend.push(pattern);
602
+ continue;
603
+ }
604
+ const comparison = this.compareVectorClocks(pattern.version.vectorClock, remoteClock);
605
+ if (comparison === 'after') {
606
+ // Local is newer, send it
607
+ toSend.push(pattern);
608
+ }
609
+ else if (comparison === 'concurrent') {
610
+ // Conflict detected
611
+ conflictsFound.push({
612
+ patternId: pattern.id,
613
+ localVersion: pattern.version,
614
+ remoteVersion: { ...pattern.version, vectorClock: remoteClock },
615
+ conflictType: 'concurrent_update',
616
+ });
617
+ // Still send local version, let receiver resolve
618
+ toSend.push(pattern);
619
+ }
620
+ // If 'before' or 'equal', don't send (remote has same or newer)
621
+ }
622
+ return { toSend, conflictsFound };
623
+ }
624
+ detectConflict(local, remote) {
625
+ const comparison = this.compareVectorClocks(local.version.vectorClock, remote.version.vectorClock);
626
+ if (comparison === 'concurrent') {
627
+ return {
628
+ patternId: local.id,
629
+ localVersion: local.version,
630
+ remoteVersion: remote.version,
631
+ conflictType: 'concurrent_update',
632
+ };
633
+ }
634
+ return null;
635
+ }
636
+ async resolveConflicts(session) {
637
+ for (const conflict of session.conflicts) {
638
+ const resolution = this.resolveConflict(conflict);
639
+ if (resolution.resolvedPattern) {
640
+ this.localPatterns.set(conflict.patternId, resolution.resolvedPattern);
641
+ session.resolvedConflicts++;
642
+ }
643
+ }
644
+ }
645
+ resolveConflict(conflict) {
646
+ const localPattern = this.localPatterns.get(conflict.patternId);
647
+ switch (this.config.conflictStrategy) {
648
+ case 'latest_wins': {
649
+ // Compare update timestamps
650
+ if (localPattern) {
651
+ const localTime = new Date(localPattern.updatedAt).getTime();
652
+ // For remote, we don't have full pattern, use vector clock logic
653
+ // Prefer local in case of concurrent updates with same timestamp
654
+ return {
655
+ strategy: 'latest_wins',
656
+ resolvedPattern: localPattern,
657
+ resolvedAt: new Date().toISOString(),
658
+ };
659
+ }
660
+ break;
661
+ }
662
+ case 'prefer_local':
663
+ return {
664
+ strategy: 'prefer_local',
665
+ resolvedPattern: localPattern,
666
+ resolvedAt: new Date().toISOString(),
667
+ };
668
+ case 'prefer_remote':
669
+ return {
670
+ strategy: 'prefer_remote',
671
+ // We would need the remote pattern here
672
+ resolvedAt: new Date().toISOString(),
673
+ };
674
+ case 'merge':
675
+ // Merge requires both patterns, fall back to latest_wins for now
676
+ return {
677
+ strategy: 'merge',
678
+ resolvedPattern: localPattern,
679
+ resolvedAt: new Date().toISOString(),
680
+ };
681
+ }
682
+ return {
683
+ strategy: 'latest_wins',
684
+ resolvedAt: new Date().toISOString(),
685
+ };
686
+ }
687
+ compareVectorClocks(a, b) {
688
+ const allAgents = Array.from(new Set([...Object.keys(a.clock), ...Object.keys(b.clock)]));
689
+ let aBeforeB = false;
690
+ let bBeforeA = false;
691
+ for (let i = 0; i < allAgents.length; i++) {
692
+ const agent = allAgents[i];
693
+ const aVal = a.clock[agent] ?? 0;
694
+ const bVal = b.clock[agent] ?? 0;
695
+ if (aVal < bVal) {
696
+ aBeforeB = true;
697
+ }
698
+ if (bVal < aVal) {
699
+ bBeforeA = true;
700
+ }
701
+ }
702
+ if (aBeforeB && bBeforeA) {
703
+ return 'concurrent';
704
+ }
705
+ if (aBeforeB) {
706
+ return 'before';
707
+ }
708
+ if (bBeforeA) {
709
+ return 'after';
710
+ }
711
+ return 'equal';
712
+ }
713
+ // ============================================
714
+ // Private - Utilities
715
+ // ============================================
716
+ applyQueryFilters(patterns, query) {
717
+ let filtered = patterns;
718
+ if (query.categories && query.categories.length > 0) {
719
+ filtered = filtered.filter((p) => query.categories.includes(p.category));
720
+ }
721
+ if (query.tags && query.tags.length > 0) {
722
+ filtered = filtered.filter((p) => p.metadata.tags?.some((t) => query.tags.includes(t)));
723
+ }
724
+ if (query.limit && query.limit > 0) {
725
+ filtered = filtered.slice(0, query.limit);
726
+ }
727
+ return filtered;
728
+ }
729
+ validatePattern(pattern) {
730
+ // Basic validation
731
+ if (!pattern.id || !pattern.category || !pattern.content) {
732
+ return false;
733
+ }
734
+ if (!pattern.version?.vectorClock) {
735
+ return false;
736
+ }
737
+ if (!Array.isArray(pattern.embedding) && !(pattern.embedding instanceof Float32Array)) {
738
+ return false;
739
+ }
740
+ return true;
741
+ }
742
+ updateProgress(updates) {
743
+ const now = Date.now();
744
+ const startTime = this.activeSession?.startedAt ?? now;
745
+ const elapsed = now - startTime;
746
+ const totalPatterns = updates.totalPatterns ?? this.currentStatus.totalPatterns;
747
+ const syncedPatterns = updates.syncedPatterns ?? this.currentStatus.syncedPatterns;
748
+ const pendingPatterns = updates.pendingPatterns ?? Math.max(0, totalPatterns - syncedPatterns);
749
+ const progressPercent = totalPatterns > 0
750
+ ? Math.min(100, Math.round((syncedPatterns / totalPatterns) * 100))
751
+ : 0;
752
+ const patternsPerSecond = elapsed > 0 ? (syncedPatterns / elapsed) * 1000 : 0;
753
+ const estimatedTimeRemaining = patternsPerSecond > 0
754
+ ? Math.round((pendingPatterns / patternsPerSecond) * 1000)
755
+ : undefined;
756
+ this.currentStatus = {
757
+ ...this.currentStatus,
758
+ ...updates,
759
+ syncedPatterns,
760
+ pendingPatterns,
761
+ progressPercent,
762
+ patternsPerSecond,
763
+ estimatedTimeRemaining,
764
+ };
765
+ this.onSyncProgress(this.currentStatus);
766
+ }
767
+ generateContinuationToken(requestId, nextBatch) {
768
+ const data = JSON.stringify({ requestId, nextBatch, timestamp: Date.now() });
769
+ // Simple base64 encoding - in production, use signed tokens
770
+ return btoa(data);
771
+ }
772
+ }
773
+ exports.SyncOrchestrator = SyncOrchestrator;
774
+ // ============================================
775
+ // Factory Functions
776
+ // ============================================
777
+ /**
778
+ * Create a new SyncOrchestrator instance
779
+ */
780
+ function createSyncOrchestrator(config) {
781
+ return new SyncOrchestrator(config);
782
+ }
783
+ //# sourceMappingURL=SyncOrchestrator.js.map