agentic-qe 2.7.3 → 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 (620) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/README.md +67 -2
  3. package/dist/agents/AccessibilityAllyAgent.d.ts +0 -7
  4. package/dist/agents/AccessibilityAllyAgent.d.ts.map +1 -1
  5. package/dist/agents/AccessibilityAllyAgent.js +0 -15
  6. package/dist/agents/AccessibilityAllyAgent.js.map +1 -1
  7. package/dist/agents/ApiContractValidatorAgent.js +4 -4
  8. package/dist/agents/ApiContractValidatorAgent.js.map +1 -1
  9. package/dist/agents/BaseAgent.d.ts +2 -0
  10. package/dist/agents/BaseAgent.d.ts.map +1 -1
  11. package/dist/agents/BaseAgent.js +43 -41
  12. package/dist/agents/BaseAgent.js.map +1 -1
  13. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts +0 -8
  14. package/dist/agents/CodeComplexityAnalyzerAgent.d.ts.map +1 -1
  15. package/dist/agents/CodeComplexityAnalyzerAgent.js +0 -15
  16. package/dist/agents/CodeComplexityAnalyzerAgent.js.map +1 -1
  17. package/dist/agents/CodeIntelligenceAgent.d.ts +0 -1
  18. package/dist/agents/CodeIntelligenceAgent.d.ts.map +1 -1
  19. package/dist/agents/CodeIntelligenceAgent.js +0 -2
  20. package/dist/agents/CodeIntelligenceAgent.js.map +1 -1
  21. package/dist/agents/DeploymentReadinessAgent.d.ts.map +1 -1
  22. package/dist/agents/DeploymentReadinessAgent.js +30 -30
  23. package/dist/agents/DeploymentReadinessAgent.js.map +1 -1
  24. package/dist/agents/FlakyTestHunterAgent.d.ts +0 -10
  25. package/dist/agents/FlakyTestHunterAgent.d.ts.map +1 -1
  26. package/dist/agents/FlakyTestHunterAgent.js +10 -20
  27. package/dist/agents/FlakyTestHunterAgent.js.map +1 -1
  28. package/dist/agents/FleetCommanderAgent.d.ts.map +1 -1
  29. package/dist/agents/FleetCommanderAgent.js +28 -28
  30. package/dist/agents/FleetCommanderAgent.js.map +1 -1
  31. package/dist/agents/LearningAgent.js +1 -1
  32. package/dist/agents/LearningAgent.js.map +1 -1
  33. package/dist/agents/PerformanceTesterAgent.d.ts.map +1 -1
  34. package/dist/agents/PerformanceTesterAgent.js +25 -25
  35. package/dist/agents/PerformanceTesterAgent.js.map +1 -1
  36. package/dist/agents/ProductionIntelligenceAgent.d.ts.map +1 -1
  37. package/dist/agents/ProductionIntelligenceAgent.js +20 -20
  38. package/dist/agents/ProductionIntelligenceAgent.js.map +1 -1
  39. package/dist/agents/QXPartnerAgent.d.ts +0 -8
  40. package/dist/agents/QXPartnerAgent.d.ts.map +1 -1
  41. package/dist/agents/QXPartnerAgent.js +0 -15
  42. package/dist/agents/QXPartnerAgent.js.map +1 -1
  43. package/dist/agents/QualityAnalyzerAgent.d.ts +0 -7
  44. package/dist/agents/QualityAnalyzerAgent.d.ts.map +1 -1
  45. package/dist/agents/QualityAnalyzerAgent.js +0 -16
  46. package/dist/agents/QualityAnalyzerAgent.js.map +1 -1
  47. package/dist/agents/RegressionRiskAnalyzerAgent.d.ts.map +1 -1
  48. package/dist/agents/RegressionRiskAnalyzerAgent.js +18 -18
  49. package/dist/agents/RegressionRiskAnalyzerAgent.js.map +1 -1
  50. package/dist/agents/RequirementsValidatorAgent.d.ts.map +1 -1
  51. package/dist/agents/RequirementsValidatorAgent.js +21 -21
  52. package/dist/agents/RequirementsValidatorAgent.js.map +1 -1
  53. package/dist/agents/SecurityScannerAgent.d.ts.map +1 -1
  54. package/dist/agents/SecurityScannerAgent.js +38 -38
  55. package/dist/agents/SecurityScannerAgent.js.map +1 -1
  56. package/dist/agents/TestDataArchitectAgent.d.ts.map +1 -1
  57. package/dist/agents/TestDataArchitectAgent.js +29 -29
  58. package/dist/agents/TestDataArchitectAgent.js.map +1 -1
  59. package/dist/agents/TestExecutorAgent.d.ts +0 -7
  60. package/dist/agents/TestExecutorAgent.d.ts.map +1 -1
  61. package/dist/agents/TestExecutorAgent.js +35 -51
  62. package/dist/agents/TestExecutorAgent.js.map +1 -1
  63. package/dist/agents/TestGeneratorAgent.d.ts +0 -7
  64. package/dist/agents/TestGeneratorAgent.d.ts.map +1 -1
  65. package/dist/agents/TestGeneratorAgent.js +0 -16
  66. package/dist/agents/TestGeneratorAgent.js.map +1 -1
  67. package/dist/agents/adapters/AgentLLMAdapter.d.ts.map +1 -1
  68. package/dist/agents/adapters/AgentLLMAdapter.js +5 -4
  69. package/dist/agents/adapters/AgentLLMAdapter.js.map +1 -1
  70. package/dist/agents/adapters/CoordinatorAdapter.d.ts.map +1 -1
  71. package/dist/agents/adapters/CoordinatorAdapter.js +2 -1
  72. package/dist/agents/adapters/CoordinatorAdapter.js.map +1 -1
  73. package/dist/agents/n8n/N8nAPIClient.d.ts.map +1 -1
  74. package/dist/agents/n8n/N8nAPIClient.js +3 -2
  75. package/dist/agents/n8n/N8nAPIClient.js.map +1 -1
  76. package/dist/agents/n8n/N8nAuditPersistence.d.ts.map +1 -1
  77. package/dist/agents/n8n/N8nAuditPersistence.js +2 -1
  78. package/dist/agents/n8n/N8nAuditPersistence.js.map +1 -1
  79. package/dist/agents/n8n/N8nBaseAgent.js +1 -1
  80. package/dist/agents/n8n/N8nBaseAgent.js.map +1 -1
  81. package/dist/agents/n8n/N8nComplianceValidatorAgent.js +1 -1
  82. package/dist/agents/n8n/N8nComplianceValidatorAgent.js.map +1 -1
  83. package/dist/agents/n8n/N8nMonitoringValidatorAgent.js +1 -1
  84. package/dist/agents/n8n/N8nMonitoringValidatorAgent.js.map +1 -1
  85. package/dist/agents/n8n/N8nReplayabilityTesterAgent.js +1 -1
  86. package/dist/agents/n8n/N8nReplayabilityTesterAgent.js.map +1 -1
  87. package/dist/agents/n8n/N8nSecurityAuditorAgent.js +1 -1
  88. package/dist/agents/n8n/N8nSecurityAuditorAgent.js.map +1 -1
  89. package/dist/agents/pool/AgentPool.d.ts.map +1 -1
  90. package/dist/agents/pool/AgentPool.js +2 -1
  91. package/dist/agents/pool/AgentPool.js.map +1 -1
  92. package/dist/agents/pool/QEAgentPoolFactory.d.ts.map +1 -1
  93. package/dist/agents/pool/QEAgentPoolFactory.js +2 -1
  94. package/dist/agents/pool/QEAgentPoolFactory.js.map +1 -1
  95. package/dist/cli/commands/agent/spawn.d.ts +12 -1
  96. package/dist/cli/commands/agent/spawn.d.ts.map +1 -1
  97. package/dist/cli/commands/agent/spawn.js +95 -8
  98. package/dist/cli/commands/agent/spawn.js.map +1 -1
  99. package/dist/cli/index.js +91 -0
  100. package/dist/cli/index.js.map +1 -1
  101. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  102. package/dist/edge/adapters/BrowserHNSWAdapter.d.ts +134 -0
  103. package/dist/edge/adapters/BrowserHNSWAdapter.d.ts.map +1 -0
  104. package/dist/edge/adapters/BrowserHNSWAdapter.js +484 -0
  105. package/dist/edge/adapters/BrowserHNSWAdapter.js.map +1 -0
  106. package/dist/edge/adapters/IndexedDBStorage.d.ts +114 -0
  107. package/dist/edge/adapters/IndexedDBStorage.d.ts.map +1 -0
  108. package/dist/edge/adapters/IndexedDBStorage.js +478 -0
  109. package/dist/edge/adapters/IndexedDBStorage.js.map +1 -0
  110. package/dist/edge/adapters/index.d.ts +12 -0
  111. package/dist/edge/adapters/index.d.ts.map +1 -0
  112. package/dist/edge/adapters/index.js +22 -0
  113. package/dist/edge/adapters/index.js.map +1 -0
  114. package/dist/edge/browser/BrowserAgent.d.ts +241 -0
  115. package/dist/edge/browser/BrowserAgent.d.ts.map +1 -0
  116. package/dist/edge/browser/BrowserAgent.js +743 -0
  117. package/dist/edge/browser/BrowserAgent.js.map +1 -0
  118. package/dist/edge/index.d.ts +34 -0
  119. package/dist/edge/index.d.ts.map +1 -0
  120. package/dist/edge/index.js +114 -0
  121. package/dist/edge/index.js.map +1 -0
  122. package/dist/edge/p2p/coordination/CoordinationManager.d.ts +181 -0
  123. package/dist/edge/p2p/coordination/CoordinationManager.d.ts.map +1 -0
  124. package/dist/edge/p2p/coordination/CoordinationManager.js +851 -0
  125. package/dist/edge/p2p/coordination/CoordinationManager.js.map +1 -0
  126. package/dist/edge/p2p/coordination/HealthMonitor.d.ts +143 -0
  127. package/dist/edge/p2p/coordination/HealthMonitor.d.ts.map +1 -0
  128. package/dist/edge/p2p/coordination/HealthMonitor.js +432 -0
  129. package/dist/edge/p2p/coordination/HealthMonitor.js.map +1 -0
  130. package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts +146 -0
  131. package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts.map +1 -0
  132. package/dist/edge/p2p/coordination/SyncOrchestrator.js +783 -0
  133. package/dist/edge/p2p/coordination/SyncOrchestrator.js.map +1 -0
  134. package/dist/edge/p2p/coordination/index.d.ts +70 -0
  135. package/dist/edge/p2p/coordination/index.d.ts.map +1 -0
  136. package/dist/edge/p2p/coordination/index.js +107 -0
  137. package/dist/edge/p2p/coordination/index.js.map +1 -0
  138. package/dist/edge/p2p/coordination/types.d.ts +572 -0
  139. package/dist/edge/p2p/coordination/types.d.ts.map +1 -0
  140. package/dist/edge/p2p/coordination/types.js +366 -0
  141. package/dist/edge/p2p/coordination/types.js.map +1 -0
  142. package/dist/edge/p2p/crdt/CRDTStore.d.ts +324 -0
  143. package/dist/edge/p2p/crdt/CRDTStore.d.ts.map +1 -0
  144. package/dist/edge/p2p/crdt/CRDTStore.js +839 -0
  145. package/dist/edge/p2p/crdt/CRDTStore.js.map +1 -0
  146. package/dist/edge/p2p/crdt/GCounter.d.ts +173 -0
  147. package/dist/edge/p2p/crdt/GCounter.d.ts.map +1 -0
  148. package/dist/edge/p2p/crdt/GCounter.js +394 -0
  149. package/dist/edge/p2p/crdt/GCounter.js.map +1 -0
  150. package/dist/edge/p2p/crdt/LWWRegister.d.ts +200 -0
  151. package/dist/edge/p2p/crdt/LWWRegister.d.ts.map +1 -0
  152. package/dist/edge/p2p/crdt/LWWRegister.js +456 -0
  153. package/dist/edge/p2p/crdt/LWWRegister.js.map +1 -0
  154. package/dist/edge/p2p/crdt/ORSet.d.ts +232 -0
  155. package/dist/edge/p2p/crdt/ORSet.d.ts.map +1 -0
  156. package/dist/edge/p2p/crdt/ORSet.js +723 -0
  157. package/dist/edge/p2p/crdt/ORSet.js.map +1 -0
  158. package/dist/edge/p2p/crdt/PatternCRDT.d.ts +366 -0
  159. package/dist/edge/p2p/crdt/PatternCRDT.d.ts.map +1 -0
  160. package/dist/edge/p2p/crdt/PatternCRDT.js +838 -0
  161. package/dist/edge/p2p/crdt/PatternCRDT.js.map +1 -0
  162. package/dist/edge/p2p/crdt/VectorClock.d.ts +274 -0
  163. package/dist/edge/p2p/crdt/VectorClock.d.ts.map +1 -0
  164. package/dist/edge/p2p/crdt/VectorClock.js +499 -0
  165. package/dist/edge/p2p/crdt/VectorClock.js.map +1 -0
  166. package/dist/edge/p2p/crdt/index.d.ts +87 -0
  167. package/dist/edge/p2p/crdt/index.d.ts.map +1 -0
  168. package/dist/edge/p2p/crdt/index.js +120 -0
  169. package/dist/edge/p2p/crdt/index.js.map +1 -0
  170. package/dist/edge/p2p/crdt/types.d.ts +667 -0
  171. package/dist/edge/p2p/crdt/types.d.ts.map +1 -0
  172. package/dist/edge/p2p/crdt/types.js +208 -0
  173. package/dist/edge/p2p/crdt/types.js.map +1 -0
  174. package/dist/edge/p2p/crypto/Identity.d.ts +139 -0
  175. package/dist/edge/p2p/crypto/Identity.d.ts.map +1 -0
  176. package/dist/edge/p2p/crypto/Identity.js +449 -0
  177. package/dist/edge/p2p/crypto/Identity.js.map +1 -0
  178. package/dist/edge/p2p/crypto/KeyManager.d.ts +196 -0
  179. package/dist/edge/p2p/crypto/KeyManager.d.ts.map +1 -0
  180. package/dist/edge/p2p/crypto/KeyManager.js +576 -0
  181. package/dist/edge/p2p/crypto/KeyManager.js.map +1 -0
  182. package/dist/edge/p2p/crypto/Signer.d.ts +164 -0
  183. package/dist/edge/p2p/crypto/Signer.d.ts.map +1 -0
  184. package/dist/edge/p2p/crypto/Signer.js +357 -0
  185. package/dist/edge/p2p/crypto/Signer.js.map +1 -0
  186. package/dist/edge/p2p/crypto/index.d.ts +90 -0
  187. package/dist/edge/p2p/crypto/index.d.ts.map +1 -0
  188. package/dist/edge/p2p/crypto/index.js +158 -0
  189. package/dist/edge/p2p/crypto/index.js.map +1 -0
  190. package/dist/edge/p2p/crypto/types.d.ts +217 -0
  191. package/dist/edge/p2p/crypto/types.d.ts.map +1 -0
  192. package/dist/edge/p2p/crypto/types.js +42 -0
  193. package/dist/edge/p2p/crypto/types.js.map +1 -0
  194. package/dist/edge/p2p/federated/FederatedCoordinator.d.ts +270 -0
  195. package/dist/edge/p2p/federated/FederatedCoordinator.d.ts.map +1 -0
  196. package/dist/edge/p2p/federated/FederatedCoordinator.js +824 -0
  197. package/dist/edge/p2p/federated/FederatedCoordinator.js.map +1 -0
  198. package/dist/edge/p2p/federated/FederatedRound.d.ts +295 -0
  199. package/dist/edge/p2p/federated/FederatedRound.d.ts.map +1 -0
  200. package/dist/edge/p2p/federated/FederatedRound.js +819 -0
  201. package/dist/edge/p2p/federated/FederatedRound.js.map +1 -0
  202. package/dist/edge/p2p/federated/GradientAggregator.d.ts +226 -0
  203. package/dist/edge/p2p/federated/GradientAggregator.d.ts.map +1 -0
  204. package/dist/edge/p2p/federated/GradientAggregator.js +826 -0
  205. package/dist/edge/p2p/federated/GradientAggregator.js.map +1 -0
  206. package/dist/edge/p2p/federated/ModelManager.d.ts +248 -0
  207. package/dist/edge/p2p/federated/ModelManager.d.ts.map +1 -0
  208. package/dist/edge/p2p/federated/ModelManager.js +724 -0
  209. package/dist/edge/p2p/federated/ModelManager.js.map +1 -0
  210. package/dist/edge/p2p/federated/index.d.ts +65 -0
  211. package/dist/edge/p2p/federated/index.d.ts.map +1 -0
  212. package/dist/edge/p2p/federated/index.js +110 -0
  213. package/dist/edge/p2p/federated/index.js.map +1 -0
  214. package/dist/edge/p2p/federated/types.d.ts +905 -0
  215. package/dist/edge/p2p/federated/types.d.ts.map +1 -0
  216. package/dist/edge/p2p/federated/types.js +339 -0
  217. package/dist/edge/p2p/federated/types.js.map +1 -0
  218. package/dist/edge/p2p/index.d.ts +156 -0
  219. package/dist/edge/p2p/index.d.ts.map +1 -0
  220. package/dist/edge/p2p/index.js +242 -0
  221. package/dist/edge/p2p/index.js.map +1 -0
  222. package/dist/edge/p2p/nat/ConnectivityTester.d.ts +128 -0
  223. package/dist/edge/p2p/nat/ConnectivityTester.d.ts.map +1 -0
  224. package/dist/edge/p2p/nat/ConnectivityTester.js +560 -0
  225. package/dist/edge/p2p/nat/ConnectivityTester.js.map +1 -0
  226. package/dist/edge/p2p/nat/HolePuncher.d.ts +159 -0
  227. package/dist/edge/p2p/nat/HolePuncher.d.ts.map +1 -0
  228. package/dist/edge/p2p/nat/HolePuncher.js +569 -0
  229. package/dist/edge/p2p/nat/HolePuncher.js.map +1 -0
  230. package/dist/edge/p2p/nat/NATDetector.d.ts +109 -0
  231. package/dist/edge/p2p/nat/NATDetector.d.ts.map +1 -0
  232. package/dist/edge/p2p/nat/NATDetector.js +472 -0
  233. package/dist/edge/p2p/nat/NATDetector.js.map +1 -0
  234. package/dist/edge/p2p/nat/TURNManager.d.ts +158 -0
  235. package/dist/edge/p2p/nat/TURNManager.d.ts.map +1 -0
  236. package/dist/edge/p2p/nat/TURNManager.js +547 -0
  237. package/dist/edge/p2p/nat/TURNManager.js.map +1 -0
  238. package/dist/edge/p2p/nat/index.d.ts +74 -0
  239. package/dist/edge/p2p/nat/index.d.ts.map +1 -0
  240. package/dist/edge/p2p/nat/index.js +104 -0
  241. package/dist/edge/p2p/nat/index.js.map +1 -0
  242. package/dist/edge/p2p/nat/types.d.ts +583 -0
  243. package/dist/edge/p2p/nat/types.d.ts.map +1 -0
  244. package/dist/edge/p2p/nat/types.js +267 -0
  245. package/dist/edge/p2p/nat/types.js.map +1 -0
  246. package/dist/edge/p2p/protocol/AgentChannel.d.ts +333 -0
  247. package/dist/edge/p2p/protocol/AgentChannel.d.ts.map +1 -0
  248. package/dist/edge/p2p/protocol/AgentChannel.js +914 -0
  249. package/dist/edge/p2p/protocol/AgentChannel.js.map +1 -0
  250. package/dist/edge/p2p/protocol/MessageEncoder.d.ts +147 -0
  251. package/dist/edge/p2p/protocol/MessageEncoder.d.ts.map +1 -0
  252. package/dist/edge/p2p/protocol/MessageEncoder.js +738 -0
  253. package/dist/edge/p2p/protocol/MessageEncoder.js.map +1 -0
  254. package/dist/edge/p2p/protocol/MessageRouter.d.ts +266 -0
  255. package/dist/edge/p2p/protocol/MessageRouter.d.ts.map +1 -0
  256. package/dist/edge/p2p/protocol/MessageRouter.js +808 -0
  257. package/dist/edge/p2p/protocol/MessageRouter.js.map +1 -0
  258. package/dist/edge/p2p/protocol/ProtocolHandler.d.ts +309 -0
  259. package/dist/edge/p2p/protocol/ProtocolHandler.d.ts.map +1 -0
  260. package/dist/edge/p2p/protocol/ProtocolHandler.js +930 -0
  261. package/dist/edge/p2p/protocol/ProtocolHandler.js.map +1 -0
  262. package/dist/edge/p2p/protocol/index.d.ts +114 -0
  263. package/dist/edge/p2p/protocol/index.d.ts.map +1 -0
  264. package/dist/edge/p2p/protocol/index.js +206 -0
  265. package/dist/edge/p2p/protocol/index.js.map +1 -0
  266. package/dist/edge/p2p/protocol/types.d.ts +737 -0
  267. package/dist/edge/p2p/protocol/types.d.ts.map +1 -0
  268. package/dist/edge/p2p/protocol/types.js +490 -0
  269. package/dist/edge/p2p/protocol/types.js.map +1 -0
  270. package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts +284 -0
  271. package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts.map +1 -0
  272. package/dist/edge/p2p/sharing/PatternBroadcaster.js +644 -0
  273. package/dist/edge/p2p/sharing/PatternBroadcaster.js.map +1 -0
  274. package/dist/edge/p2p/sharing/PatternIndex.d.ts +168 -0
  275. package/dist/edge/p2p/sharing/PatternIndex.d.ts.map +1 -0
  276. package/dist/edge/p2p/sharing/PatternIndex.js +781 -0
  277. package/dist/edge/p2p/sharing/PatternIndex.js.map +1 -0
  278. package/dist/edge/p2p/sharing/PatternSerializer.d.ts +163 -0
  279. package/dist/edge/p2p/sharing/PatternSerializer.d.ts.map +1 -0
  280. package/dist/edge/p2p/sharing/PatternSerializer.js +696 -0
  281. package/dist/edge/p2p/sharing/PatternSerializer.js.map +1 -0
  282. package/dist/edge/p2p/sharing/PatternSyncManager.d.ts +242 -0
  283. package/dist/edge/p2p/sharing/PatternSyncManager.d.ts.map +1 -0
  284. package/dist/edge/p2p/sharing/PatternSyncManager.js +859 -0
  285. package/dist/edge/p2p/sharing/PatternSyncManager.js.map +1 -0
  286. package/dist/edge/p2p/sharing/index.d.ts +90 -0
  287. package/dist/edge/p2p/sharing/index.d.ts.map +1 -0
  288. package/dist/edge/p2p/sharing/index.js +152 -0
  289. package/dist/edge/p2p/sharing/index.js.map +1 -0
  290. package/dist/edge/p2p/sharing/types.d.ts +796 -0
  291. package/dist/edge/p2p/sharing/types.d.ts.map +1 -0
  292. package/dist/edge/p2p/sharing/types.js +264 -0
  293. package/dist/edge/p2p/sharing/types.js.map +1 -0
  294. package/dist/edge/p2p/webrtc/ConnectionPool.d.ts +218 -0
  295. package/dist/edge/p2p/webrtc/ConnectionPool.d.ts.map +1 -0
  296. package/dist/edge/p2p/webrtc/ConnectionPool.js +562 -0
  297. package/dist/edge/p2p/webrtc/ConnectionPool.js.map +1 -0
  298. package/dist/edge/p2p/webrtc/ICEManager.d.ts +171 -0
  299. package/dist/edge/p2p/webrtc/ICEManager.d.ts.map +1 -0
  300. package/dist/edge/p2p/webrtc/ICEManager.js +490 -0
  301. package/dist/edge/p2p/webrtc/ICEManager.js.map +1 -0
  302. package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts +159 -0
  303. package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts.map +1 -0
  304. package/dist/edge/p2p/webrtc/PeerConnectionManager.js +735 -0
  305. package/dist/edge/p2p/webrtc/PeerConnectionManager.js.map +1 -0
  306. package/dist/edge/p2p/webrtc/SignalingClient.d.ts +191 -0
  307. package/dist/edge/p2p/webrtc/SignalingClient.d.ts.map +1 -0
  308. package/dist/edge/p2p/webrtc/SignalingClient.js +608 -0
  309. package/dist/edge/p2p/webrtc/SignalingClient.js.map +1 -0
  310. package/dist/edge/p2p/webrtc/index.d.ts +158 -0
  311. package/dist/edge/p2p/webrtc/index.d.ts.map +1 -0
  312. package/dist/edge/p2p/webrtc/index.js +164 -0
  313. package/dist/edge/p2p/webrtc/index.js.map +1 -0
  314. package/dist/edge/p2p/webrtc/types.d.ts +665 -0
  315. package/dist/edge/p2p/webrtc/types.d.ts.map +1 -0
  316. package/dist/edge/p2p/webrtc/types.js +245 -0
  317. package/dist/edge/p2p/webrtc/types.js.map +1 -0
  318. package/dist/edge/server/AgentSpawnAPI.d.ts +98 -0
  319. package/dist/edge/server/AgentSpawnAPI.d.ts.map +1 -0
  320. package/dist/edge/server/AgentSpawnAPI.js +264 -0
  321. package/dist/edge/server/AgentSpawnAPI.js.map +1 -0
  322. package/dist/edge/server/SignalingServer.d.ts +71 -0
  323. package/dist/edge/server/SignalingServer.d.ts.map +1 -0
  324. package/dist/edge/server/SignalingServer.js +429 -0
  325. package/dist/edge/server/SignalingServer.js.map +1 -0
  326. package/dist/edge/server/index.d.ts +64 -0
  327. package/dist/edge/server/index.d.ts.map +1 -0
  328. package/dist/edge/server/index.js +318 -0
  329. package/dist/edge/server/index.js.map +1 -0
  330. package/dist/edge/types/browser-agent.types.d.ts +455 -0
  331. package/dist/edge/types/browser-agent.types.d.ts.map +1 -0
  332. package/dist/edge/types/browser-agent.types.js +116 -0
  333. package/dist/edge/types/browser-agent.types.js.map +1 -0
  334. package/dist/edge/types/index.d.ts +11 -0
  335. package/dist/edge/types/index.d.ts.map +1 -0
  336. package/dist/edge/types/index.js +17 -0
  337. package/dist/edge/types/index.js.map +1 -0
  338. package/dist/edge/types/storage.types.d.ts +207 -0
  339. package/dist/edge/types/storage.types.d.ts.map +1 -0
  340. package/dist/edge/types/storage.types.js +47 -0
  341. package/dist/edge/types/storage.types.js.map +1 -0
  342. package/dist/edge/wasm/shims.d.ts +224 -0
  343. package/dist/edge/wasm/shims.d.ts.map +1 -0
  344. package/dist/edge/wasm/shims.js +667 -0
  345. package/dist/edge/wasm/shims.js.map +1 -0
  346. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +33 -0
  347. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -0
  348. package/dist/mcp/handlers/NewDomainToolsHandler.js +305 -0
  349. package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -0
  350. package/dist/mcp/handlers/filtered/index.d.ts +15 -19
  351. package/dist/mcp/handlers/filtered/index.d.ts.map +1 -1
  352. package/dist/mcp/handlers/filtered/index.js +16 -27
  353. package/dist/mcp/handlers/filtered/index.js.map +1 -1
  354. package/dist/mcp/handlers/integration/index.d.ts +5 -4
  355. package/dist/mcp/handlers/integration/index.d.ts.map +1 -1
  356. package/dist/mcp/handlers/integration/index.js +7 -7
  357. package/dist/mcp/handlers/integration/index.js.map +1 -1
  358. package/dist/mcp/server-instructions.d.ts +1 -1
  359. package/dist/mcp/server-instructions.js +1 -1
  360. package/dist/mcp/server.d.ts.map +1 -1
  361. package/dist/mcp/server.js +14 -0
  362. package/dist/mcp/server.js.map +1 -1
  363. package/dist/mcp/tools.d.ts +8 -0
  364. package/dist/mcp/tools.d.ts.map +1 -1
  365. package/dist/mcp/tools.js +412 -1
  366. package/dist/mcp/tools.js.map +1 -1
  367. package/dist/persistence/migrations/all-migrations.d.ts.map +1 -1
  368. package/dist/persistence/migrations/all-migrations.js +44 -1
  369. package/dist/persistence/migrations/all-migrations.js.map +1 -1
  370. package/dist/planning/GOAPPlanner.d.ts +1 -0
  371. package/dist/planning/GOAPPlanner.d.ts.map +1 -1
  372. package/dist/planning/GOAPPlanner.js +15 -2
  373. package/dist/planning/GOAPPlanner.js.map +1 -1
  374. package/dist/planning/PlanLearning.d.ts.map +1 -1
  375. package/dist/planning/PlanLearning.js +2 -1
  376. package/dist/planning/PlanLearning.js.map +1 -1
  377. package/dist/planning/PlanSimilarity.d.ts.map +1 -1
  378. package/dist/planning/PlanSimilarity.js +2 -1
  379. package/dist/planning/PlanSimilarity.js.map +1 -1
  380. package/package.json +29 -8
  381. package/dist/alerting/AlertManager.d.ts +0 -120
  382. package/dist/alerting/AlertManager.d.ts.map +0 -1
  383. package/dist/alerting/AlertManager.js +0 -345
  384. package/dist/alerting/AlertManager.js.map +0 -1
  385. package/dist/alerting/FeedbackRouter.d.ts +0 -98
  386. package/dist/alerting/FeedbackRouter.d.ts.map +0 -1
  387. package/dist/alerting/FeedbackRouter.js +0 -331
  388. package/dist/alerting/FeedbackRouter.js.map +0 -1
  389. package/dist/alerting/StrategyApplicator.d.ts +0 -120
  390. package/dist/alerting/StrategyApplicator.d.ts.map +0 -1
  391. package/dist/alerting/StrategyApplicator.js +0 -299
  392. package/dist/alerting/StrategyApplicator.js.map +0 -1
  393. package/dist/alerting/index.d.ts +0 -68
  394. package/dist/alerting/index.d.ts.map +0 -1
  395. package/dist/alerting/index.js +0 -112
  396. package/dist/alerting/index.js.map +0 -1
  397. package/dist/alerting/types.d.ts +0 -118
  398. package/dist/alerting/types.d.ts.map +0 -1
  399. package/dist/alerting/types.js +0 -11
  400. package/dist/alerting/types.js.map +0 -1
  401. package/dist/cli/commands/fleet/backup.d.ts +0 -49
  402. package/dist/cli/commands/fleet/backup.d.ts.map +0 -1
  403. package/dist/cli/commands/fleet/backup.js +0 -88
  404. package/dist/cli/commands/fleet/backup.js.map +0 -1
  405. package/dist/cli/commands/fleet/health.d.ts +0 -154
  406. package/dist/cli/commands/fleet/health.d.ts.map +0 -1
  407. package/dist/cli/commands/fleet/health.js +0 -483
  408. package/dist/cli/commands/fleet/health.js.map +0 -1
  409. package/dist/cli/commands/fleet/init.d.ts +0 -11
  410. package/dist/cli/commands/fleet/init.d.ts.map +0 -1
  411. package/dist/cli/commands/fleet/init.js +0 -91
  412. package/dist/cli/commands/fleet/init.js.map +0 -1
  413. package/dist/cli/commands/fleet/logs.d.ts +0 -21
  414. package/dist/cli/commands/fleet/logs.d.ts.map +0 -1
  415. package/dist/cli/commands/fleet/logs.js +0 -267
  416. package/dist/cli/commands/fleet/logs.js.map +0 -1
  417. package/dist/cli/commands/fleet/metrics.d.ts +0 -27
  418. package/dist/cli/commands/fleet/metrics.d.ts.map +0 -1
  419. package/dist/cli/commands/fleet/metrics.js +0 -369
  420. package/dist/cli/commands/fleet/metrics.js.map +0 -1
  421. package/dist/cli/commands/fleet/monitor.d.ts +0 -18
  422. package/dist/cli/commands/fleet/monitor.d.ts.map +0 -1
  423. package/dist/cli/commands/fleet/monitor.js +0 -237
  424. package/dist/cli/commands/fleet/monitor.js.map +0 -1
  425. package/dist/cli/commands/fleet/optimize.d.ts +0 -42
  426. package/dist/cli/commands/fleet/optimize.d.ts.map +0 -1
  427. package/dist/cli/commands/fleet/optimize.js +0 -135
  428. package/dist/cli/commands/fleet/optimize.js.map +0 -1
  429. package/dist/cli/commands/fleet/recover.d.ts +0 -22
  430. package/dist/cli/commands/fleet/recover.d.ts.map +0 -1
  431. package/dist/cli/commands/fleet/recover.js +0 -99
  432. package/dist/cli/commands/fleet/recover.js.map +0 -1
  433. package/dist/cli/commands/fleet/restart.d.ts +0 -18
  434. package/dist/cli/commands/fleet/restart.d.ts.map +0 -1
  435. package/dist/cli/commands/fleet/restart.js +0 -290
  436. package/dist/cli/commands/fleet/restart.js.map +0 -1
  437. package/dist/cli/commands/fleet/scale.d.ts +0 -9
  438. package/dist/cli/commands/fleet/scale.d.ts.map +0 -1
  439. package/dist/cli/commands/fleet/scale.js +0 -77
  440. package/dist/cli/commands/fleet/scale.js.map +0 -1
  441. package/dist/cli/commands/fleet/shutdown.d.ts +0 -19
  442. package/dist/cli/commands/fleet/shutdown.d.ts.map +0 -1
  443. package/dist/cli/commands/fleet/shutdown.js +0 -307
  444. package/dist/cli/commands/fleet/shutdown.js.map +0 -1
  445. package/dist/cli/commands/fleet/status.d.ts +0 -10
  446. package/dist/cli/commands/fleet/status.d.ts.map +0 -1
  447. package/dist/cli/commands/fleet/status.js +0 -97
  448. package/dist/cli/commands/fleet/status.js.map +0 -1
  449. package/dist/cli/commands/fleet/topology.d.ts +0 -23
  450. package/dist/cli/commands/fleet/topology.d.ts.map +0 -1
  451. package/dist/cli/commands/fleet/topology.js +0 -376
  452. package/dist/cli/commands/fleet/topology.js.map +0 -1
  453. package/dist/cli/commands/monitor/alerts.d.ts +0 -45
  454. package/dist/cli/commands/monitor/alerts.d.ts.map +0 -1
  455. package/dist/cli/commands/monitor/alerts.js +0 -168
  456. package/dist/cli/commands/monitor/alerts.js.map +0 -1
  457. package/dist/cli/commands/monitor/analyze.d.ts +0 -49
  458. package/dist/cli/commands/monitor/analyze.d.ts.map +0 -1
  459. package/dist/cli/commands/monitor/analyze.js +0 -209
  460. package/dist/cli/commands/monitor/analyze.js.map +0 -1
  461. package/dist/cli/commands/monitor/compare.d.ts +0 -38
  462. package/dist/cli/commands/monitor/compare.d.ts.map +0 -1
  463. package/dist/cli/commands/monitor/compare.js +0 -177
  464. package/dist/cli/commands/monitor/compare.js.map +0 -1
  465. package/dist/cli/commands/monitor/dashboard.d.ts +0 -34
  466. package/dist/cli/commands/monitor/dashboard.d.ts.map +0 -1
  467. package/dist/cli/commands/monitor/dashboard.js +0 -157
  468. package/dist/cli/commands/monitor/dashboard.js.map +0 -1
  469. package/dist/cli/commands/monitor/export.d.ts +0 -36
  470. package/dist/cli/commands/monitor/export.d.ts.map +0 -1
  471. package/dist/cli/commands/monitor/export.js +0 -157
  472. package/dist/cli/commands/monitor/export.js.map +0 -1
  473. package/dist/cli/commands/monitor/index.d.ts +0 -11
  474. package/dist/cli/commands/monitor/index.d.ts.map +0 -1
  475. package/dist/cli/commands/monitor/index.js +0 -14
  476. package/dist/cli/commands/monitor/index.js.map +0 -1
  477. package/dist/cli/commands/quality/baseline.d.ts +0 -27
  478. package/dist/cli/commands/quality/baseline.d.ts.map +0 -1
  479. package/dist/cli/commands/quality/baseline.js +0 -124
  480. package/dist/cli/commands/quality/baseline.js.map +0 -1
  481. package/dist/cli/commands/quality/compare.d.ts +0 -36
  482. package/dist/cli/commands/quality/compare.d.ts.map +0 -1
  483. package/dist/cli/commands/quality/compare.js +0 -136
  484. package/dist/cli/commands/quality/compare.js.map +0 -1
  485. package/dist/cli/commands/quality/decision.d.ts +0 -81
  486. package/dist/cli/commands/quality/decision.d.ts.map +0 -1
  487. package/dist/cli/commands/quality/decision.js +0 -319
  488. package/dist/cli/commands/quality/decision.js.map +0 -1
  489. package/dist/cli/commands/quality/gate.d.ts +0 -47
  490. package/dist/cli/commands/quality/gate.d.ts.map +0 -1
  491. package/dist/cli/commands/quality/gate.js +0 -205
  492. package/dist/cli/commands/quality/gate.js.map +0 -1
  493. package/dist/cli/commands/quality/index.d.ts +0 -17
  494. package/dist/cli/commands/quality/index.d.ts.map +0 -1
  495. package/dist/cli/commands/quality/index.js +0 -41
  496. package/dist/cli/commands/quality/index.js.map +0 -1
  497. package/dist/cli/commands/quality/policy.d.ts +0 -57
  498. package/dist/cli/commands/quality/policy.d.ts.map +0 -1
  499. package/dist/cli/commands/quality/policy.js +0 -359
  500. package/dist/cli/commands/quality/policy.js.map +0 -1
  501. package/dist/cli/commands/quality/risk.d.ts +0 -41
  502. package/dist/cli/commands/quality/risk.d.ts.map +0 -1
  503. package/dist/cli/commands/quality/risk.js +0 -255
  504. package/dist/cli/commands/quality/risk.js.map +0 -1
  505. package/dist/cli/commands/quality/trends.d.ts +0 -40
  506. package/dist/cli/commands/quality/trends.d.ts.map +0 -1
  507. package/dist/cli/commands/quality/trends.js +0 -122
  508. package/dist/cli/commands/quality/trends.js.map +0 -1
  509. package/dist/cli/commands/quality/validate.d.ts +0 -44
  510. package/dist/cli/commands/quality/validate.d.ts.map +0 -1
  511. package/dist/cli/commands/quality/validate.js +0 -234
  512. package/dist/cli/commands/quality/validate.js.map +0 -1
  513. package/dist/cli/commands/test/analyze-failures.d.ts +0 -39
  514. package/dist/cli/commands/test/analyze-failures.d.ts.map +0 -1
  515. package/dist/cli/commands/test/analyze-failures.js +0 -113
  516. package/dist/cli/commands/test/analyze-failures.js.map +0 -1
  517. package/dist/cli/commands/test/clean.d.ts +0 -3
  518. package/dist/cli/commands/test/clean.d.ts.map +0 -1
  519. package/dist/cli/commands/test/clean.js +0 -148
  520. package/dist/cli/commands/test/clean.js.map +0 -1
  521. package/dist/cli/commands/test/debug.d.ts +0 -3
  522. package/dist/cli/commands/test/debug.d.ts.map +0 -1
  523. package/dist/cli/commands/test/debug.js +0 -167
  524. package/dist/cli/commands/test/debug.js.map +0 -1
  525. package/dist/cli/commands/test/diff.d.ts +0 -3
  526. package/dist/cli/commands/test/diff.d.ts.map +0 -1
  527. package/dist/cli/commands/test/diff.js +0 -195
  528. package/dist/cli/commands/test/diff.js.map +0 -1
  529. package/dist/cli/commands/test/flakiness.d.ts +0 -32
  530. package/dist/cli/commands/test/flakiness.d.ts.map +0 -1
  531. package/dist/cli/commands/test/flakiness.js +0 -121
  532. package/dist/cli/commands/test/flakiness.js.map +0 -1
  533. package/dist/cli/commands/test/index.d.ts +0 -17
  534. package/dist/cli/commands/test/index.d.ts.map +0 -1
  535. package/dist/cli/commands/test/index.js +0 -45
  536. package/dist/cli/commands/test/index.js.map +0 -1
  537. package/dist/cli/commands/test/mutate.d.ts +0 -29
  538. package/dist/cli/commands/test/mutate.d.ts.map +0 -1
  539. package/dist/cli/commands/test/mutate.js +0 -163
  540. package/dist/cli/commands/test/mutate.js.map +0 -1
  541. package/dist/cli/commands/test/parallel.d.ts +0 -3
  542. package/dist/cli/commands/test/parallel.d.ts.map +0 -1
  543. package/dist/cli/commands/test/parallel.js +0 -117
  544. package/dist/cli/commands/test/parallel.js.map +0 -1
  545. package/dist/cli/commands/test/profile.d.ts +0 -3
  546. package/dist/cli/commands/test/profile.d.ts.map +0 -1
  547. package/dist/cli/commands/test/profile.js +0 -156
  548. package/dist/cli/commands/test/profile.js.map +0 -1
  549. package/dist/cli/commands/test/queue.d.ts +0 -3
  550. package/dist/cli/commands/test/queue.d.ts.map +0 -1
  551. package/dist/cli/commands/test/queue.js +0 -140
  552. package/dist/cli/commands/test/queue.js.map +0 -1
  553. package/dist/cli/commands/test/retry.d.ts +0 -3
  554. package/dist/cli/commands/test/retry.d.ts.map +0 -1
  555. package/dist/cli/commands/test/retry.js +0 -105
  556. package/dist/cli/commands/test/retry.js.map +0 -1
  557. package/dist/cli/commands/test/snapshot.d.ts +0 -3
  558. package/dist/cli/commands/test/snapshot.d.ts.map +0 -1
  559. package/dist/cli/commands/test/snapshot.js +0 -176
  560. package/dist/cli/commands/test/snapshot.js.map +0 -1
  561. package/dist/cli/commands/test/trace.d.ts +0 -3
  562. package/dist/cli/commands/test/trace.d.ts.map +0 -1
  563. package/dist/cli/commands/test/trace.js +0 -137
  564. package/dist/cli/commands/test/trace.js.map +0 -1
  565. package/dist/cli/commands/test/watch.d.ts +0 -3
  566. package/dist/cli/commands/test/watch.d.ts.map +0 -1
  567. package/dist/cli/commands/test/watch.js +0 -130
  568. package/dist/cli/commands/test/watch.js.map +0 -1
  569. package/dist/cli/index-spec.d.ts +0 -3
  570. package/dist/cli/index-spec.d.ts.map +0 -1
  571. package/dist/cli/index-spec.js +0 -154
  572. package/dist/cli/index-spec.js.map +0 -1
  573. package/dist/cli/index-working.d.ts +0 -7
  574. package/dist/cli/index-working.d.ts.map +0 -1
  575. package/dist/cli/index-working.js +0 -617
  576. package/dist/cli/index-working.js.map +0 -1
  577. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts +0 -83
  578. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts.map +0 -1
  579. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js +0 -130
  580. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js.map +0 -1
  581. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts +0 -58
  582. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts.map +0 -1
  583. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js +0 -84
  584. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js.map +0 -1
  585. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts +0 -54
  586. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts.map +0 -1
  587. package/dist/mcp/handlers/filtered/security-scanner-filtered.js +0 -73
  588. package/dist/mcp/handlers/filtered/security-scanner-filtered.js.map +0 -1
  589. package/dist/mcp/handlers/integration/contract-validate.d.ts +0 -10
  590. package/dist/mcp/handlers/integration/contract-validate.d.ts.map +0 -1
  591. package/dist/mcp/handlers/integration/contract-validate.js +0 -348
  592. package/dist/mcp/handlers/integration/contract-validate.js.map +0 -1
  593. package/dist/reporting/ResultAggregator.d.ts +0 -107
  594. package/dist/reporting/ResultAggregator.d.ts.map +0 -1
  595. package/dist/reporting/ResultAggregator.js +0 -435
  596. package/dist/reporting/ResultAggregator.js.map +0 -1
  597. package/dist/reporting/index.d.ts +0 -48
  598. package/dist/reporting/index.d.ts.map +0 -1
  599. package/dist/reporting/index.js +0 -154
  600. package/dist/reporting/index.js.map +0 -1
  601. package/dist/reporting/reporters/ControlLoopReporter.d.ts +0 -128
  602. package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +0 -1
  603. package/dist/reporting/reporters/ControlLoopReporter.js +0 -417
  604. package/dist/reporting/reporters/ControlLoopReporter.js.map +0 -1
  605. package/dist/reporting/reporters/HumanReadableReporter.d.ts +0 -140
  606. package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +0 -1
  607. package/dist/reporting/reporters/HumanReadableReporter.js +0 -524
  608. package/dist/reporting/reporters/HumanReadableReporter.js.map +0 -1
  609. package/dist/reporting/reporters/JSONReporter.d.ts +0 -251
  610. package/dist/reporting/reporters/JSONReporter.d.ts.map +0 -1
  611. package/dist/reporting/reporters/JSONReporter.js +0 -325
  612. package/dist/reporting/reporters/JSONReporter.js.map +0 -1
  613. package/dist/reporting/reporters/index.d.ts +0 -14
  614. package/dist/reporting/reporters/index.d.ts.map +0 -1
  615. package/dist/reporting/reporters/index.js +0 -19
  616. package/dist/reporting/reporters/index.js.map +0 -1
  617. package/dist/reporting/types.d.ts +0 -427
  618. package/dist/reporting/types.d.ts.map +0 -1
  619. package/dist/reporting/types.js +0 -12
  620. package/dist/reporting/types.js.map +0 -1
@@ -0,0 +1,723 @@
1
+ "use strict";
2
+ /**
3
+ * OR-Set (Observed-Remove Set) CRDT Implementation
4
+ *
5
+ * A state-based CRDT set that handles concurrent add/remove operations.
6
+ * Each add operation creates a unique tag, and remove operates on tags.
7
+ * This ensures that adds observed before removes survive the merge.
8
+ *
9
+ * @module edge/p2p/crdt/ORSet
10
+ * @version 1.0.0
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ORSet = void 0;
14
+ const types_1 = require("./types");
15
+ const VectorClock_1 = require("./VectorClock");
16
+ // ============================================
17
+ // Utility Functions
18
+ // ============================================
19
+ /**
20
+ * Generate a unique tag for add operations
21
+ *
22
+ * @param replicaId - Replica performing the add
23
+ * @returns Unique tag string
24
+ */
25
+ function generateTag(replicaId) {
26
+ const timestamp = Date.now();
27
+ const random = Math.random().toString(36).substring(2, 10);
28
+ return `${replicaId}-${timestamp}-${random}`;
29
+ }
30
+ /**
31
+ * Hash a value for deduplication checking
32
+ *
33
+ * @param value - Value to hash
34
+ * @returns Hash string
35
+ */
36
+ function hashValue(value) {
37
+ return JSON.stringify(value);
38
+ }
39
+ // ============================================
40
+ // ORSet Class
41
+ // ============================================
42
+ /**
43
+ * Observed-Remove Set CRDT.
44
+ *
45
+ * Properties:
46
+ * - Add operations create unique tags
47
+ * - Remove operations target specific tags
48
+ * - Concurrent add wins over remove (add-wins semantics)
49
+ * - Supports arbitrary value types
50
+ * - Strongly eventually consistent
51
+ *
52
+ * @example
53
+ * ```typescript
54
+ * const set = new ORSet<string>('replica-1', 'tags');
55
+ *
56
+ * set.add('typescript');
57
+ * set.add('testing');
58
+ * set.remove('testing');
59
+ *
60
+ * console.log(set.values()); // ['typescript']
61
+ *
62
+ * // Merge with remote state
63
+ * set.merge(remoteState);
64
+ * ```
65
+ */
66
+ class ORSet {
67
+ /**
68
+ * Create a new OR-Set
69
+ *
70
+ * @param replicaId - Local replica identifier
71
+ * @param id - Unique set identifier
72
+ * @param options - Optional configuration
73
+ */
74
+ constructor(replicaId, id, options) {
75
+ this.id = id;
76
+ this.replicaId = replicaId;
77
+ this.elements = new Map();
78
+ this.tombstones = new Map();
79
+ this.vectorClock = new VectorClock_1.VectorClock(replicaId);
80
+ this.sequenceNumber = 0;
81
+ this.lastDeltaClock = this.vectorClock.clone();
82
+ this.tombstoneTtl = options?.tombstoneTtl ?? types_1.DEFAULT_TOMBSTONE_TTL;
83
+ this.compareValues = options?.compareValues ?? ((a, b) => hashValue(a) === hashValue(b));
84
+ const now = Date.now();
85
+ this.metadata = {
86
+ createdAt: now,
87
+ updatedAt: now,
88
+ mergeCount: 0,
89
+ lastModifiedBy: replicaId,
90
+ };
91
+ }
92
+ // ============================================
93
+ // Core Operations
94
+ // ============================================
95
+ /**
96
+ * Get the current set value
97
+ *
98
+ * @returns Set of current values
99
+ */
100
+ value() {
101
+ const result = new Set();
102
+ for (const element of this.elements.values()) {
103
+ result.add(element.value);
104
+ }
105
+ return result;
106
+ }
107
+ /**
108
+ * Get all values as an array
109
+ *
110
+ * @returns Array of values
111
+ */
112
+ values() {
113
+ return Array.from(this.value());
114
+ }
115
+ /**
116
+ * Add a value to the set
117
+ *
118
+ * @param value - Value to add
119
+ * @returns The generated tag
120
+ */
121
+ add(value) {
122
+ const tag = generateTag(this.replicaId);
123
+ const now = Date.now();
124
+ const element = {
125
+ value,
126
+ tag,
127
+ addedBy: this.replicaId,
128
+ addedAt: now,
129
+ };
130
+ this.elements.set(tag, element);
131
+ this.vectorClock.increment();
132
+ this.metadata.updatedAt = now;
133
+ this.metadata.lastModifiedBy = this.replicaId;
134
+ this.sequenceNumber++;
135
+ return tag;
136
+ }
137
+ /**
138
+ * Remove a value from the set
139
+ *
140
+ * This removes all instances of the value by tombstoning all matching tags.
141
+ *
142
+ * @param value - Value to remove
143
+ * @returns Number of elements removed
144
+ */
145
+ remove(value) {
146
+ const tagsToRemove = [];
147
+ // Find all tags with this value
148
+ for (const [tag, element] of this.elements) {
149
+ if (this.compareValues(element.value, value)) {
150
+ tagsToRemove.push(tag);
151
+ }
152
+ }
153
+ if (tagsToRemove.length === 0) {
154
+ return 0;
155
+ }
156
+ const now = Date.now();
157
+ // Remove elements and create tombstones
158
+ for (const tag of tagsToRemove) {
159
+ this.elements.delete(tag);
160
+ const tombstone = {
161
+ id: `ts-${tag}`,
162
+ elementId: tag,
163
+ crdtId: this.id,
164
+ deletedBy: this.replicaId,
165
+ vectorClock: this.vectorClock.serialize(),
166
+ createdAt: now,
167
+ expiresAt: now + this.tombstoneTtl,
168
+ collected: false,
169
+ };
170
+ this.tombstones.set(tag, tombstone);
171
+ }
172
+ this.vectorClock.increment();
173
+ this.metadata.updatedAt = now;
174
+ this.metadata.lastModifiedBy = this.replicaId;
175
+ this.sequenceNumber++;
176
+ return tagsToRemove.length;
177
+ }
178
+ /**
179
+ * Remove a specific element by tag
180
+ *
181
+ * @param tag - Tag to remove
182
+ * @returns True if removed
183
+ */
184
+ removeByTag(tag) {
185
+ if (!this.elements.has(tag)) {
186
+ return false;
187
+ }
188
+ const now = Date.now();
189
+ this.elements.delete(tag);
190
+ const tombstone = {
191
+ id: `ts-${tag}`,
192
+ elementId: tag,
193
+ crdtId: this.id,
194
+ deletedBy: this.replicaId,
195
+ vectorClock: this.vectorClock.serialize(),
196
+ createdAt: now,
197
+ expiresAt: now + this.tombstoneTtl,
198
+ collected: false,
199
+ };
200
+ this.tombstones.set(tag, tombstone);
201
+ this.vectorClock.increment();
202
+ this.metadata.updatedAt = now;
203
+ this.metadata.lastModifiedBy = this.replicaId;
204
+ this.sequenceNumber++;
205
+ return true;
206
+ }
207
+ /**
208
+ * Check if a value is in the set
209
+ *
210
+ * @param value - Value to check
211
+ * @returns True if present
212
+ */
213
+ has(value) {
214
+ for (const element of this.elements.values()) {
215
+ if (this.compareValues(element.value, value)) {
216
+ return true;
217
+ }
218
+ }
219
+ return false;
220
+ }
221
+ /**
222
+ * Check if a tag exists
223
+ *
224
+ * @param tag - Tag to check
225
+ * @returns True if tag exists
226
+ */
227
+ hasTag(tag) {
228
+ return this.elements.has(tag);
229
+ }
230
+ /**
231
+ * Get the element for a tag
232
+ *
233
+ * @param tag - Tag to look up
234
+ * @returns Element or undefined
235
+ */
236
+ getByTag(tag) {
237
+ return this.elements.get(tag);
238
+ }
239
+ /**
240
+ * Get the number of elements
241
+ *
242
+ * @returns Size of the set
243
+ */
244
+ size() {
245
+ return this.elements.size;
246
+ }
247
+ /**
248
+ * Check if set is empty
249
+ *
250
+ * @returns True if empty
251
+ */
252
+ isEmpty() {
253
+ return this.elements.size === 0;
254
+ }
255
+ /**
256
+ * Clear all elements
257
+ */
258
+ clear() {
259
+ const now = Date.now();
260
+ // Create tombstones for all elements
261
+ for (const tag of this.elements.keys()) {
262
+ const tombstone = {
263
+ id: `ts-${tag}`,
264
+ elementId: tag,
265
+ crdtId: this.id,
266
+ deletedBy: this.replicaId,
267
+ vectorClock: this.vectorClock.serialize(),
268
+ createdAt: now,
269
+ expiresAt: now + this.tombstoneTtl,
270
+ collected: false,
271
+ };
272
+ this.tombstones.set(tag, tombstone);
273
+ }
274
+ this.elements.clear();
275
+ this.vectorClock.increment();
276
+ this.metadata.updatedAt = now;
277
+ this.metadata.lastModifiedBy = this.replicaId;
278
+ this.sequenceNumber++;
279
+ }
280
+ // ============================================
281
+ // State Management
282
+ // ============================================
283
+ /**
284
+ * Get the serializable state of this set
285
+ *
286
+ * @returns CRDT state
287
+ */
288
+ state() {
289
+ const elements = Array.from(this.elements.values()).map(el => ({
290
+ tag: el.tag,
291
+ value: el.value,
292
+ addedBy: el.addedBy,
293
+ addedAt: el.addedAt,
294
+ }));
295
+ const tombstones = Array.from(this.tombstones.keys());
296
+ return {
297
+ type: types_1.CRDTType.ORSet,
298
+ id: this.id,
299
+ vectorClock: this.vectorClock.serialize(),
300
+ origin: this.replicaId,
301
+ value: { elements, tombstones },
302
+ metadata: { ...this.metadata },
303
+ stateVersion: 1,
304
+ };
305
+ }
306
+ /**
307
+ * Restore an OR-Set from serialized state
308
+ *
309
+ * @param state - Serialized state
310
+ * @param replicaId - Local replica ID
311
+ * @returns Restored set
312
+ */
313
+ static fromState(state, replicaId) {
314
+ if (state.type !== types_1.CRDTType.ORSet) {
315
+ throw new types_1.CRDTError(`Invalid CRDT type: expected ${types_1.CRDTType.ORSet}, got ${state.type}`, types_1.CRDTErrorCode.InvalidType, state.id);
316
+ }
317
+ const set = new ORSet(replicaId, state.id);
318
+ // Restore elements
319
+ for (const el of state.value.elements) {
320
+ const element = {
321
+ value: el.value,
322
+ tag: el.tag,
323
+ addedBy: el.addedBy,
324
+ addedAt: el.addedAt,
325
+ };
326
+ set.elements.set(el.tag, element);
327
+ }
328
+ // Restore tombstones
329
+ const now = Date.now();
330
+ for (const tag of state.value.tombstones) {
331
+ const tombstone = {
332
+ id: `ts-${tag}`,
333
+ elementId: tag,
334
+ crdtId: state.id,
335
+ deletedBy: state.origin,
336
+ vectorClock: state.vectorClock,
337
+ createdAt: now,
338
+ expiresAt: now + types_1.DEFAULT_TOMBSTONE_TTL,
339
+ collected: false,
340
+ };
341
+ set.tombstones.set(tag, tombstone);
342
+ }
343
+ // Restore vector clock
344
+ set.vectorClock = VectorClock_1.VectorClock.fromSerialized(state.vectorClock, replicaId);
345
+ // Restore metadata
346
+ set.metadata = { ...state.metadata };
347
+ return set;
348
+ }
349
+ // ============================================
350
+ // Merge Operations
351
+ // ============================================
352
+ /**
353
+ * Merge with another OR-Set state
354
+ *
355
+ * Add-wins semantics: if an element is added in one replica
356
+ * and removed in another concurrently, the add wins.
357
+ *
358
+ * @param other - Other set state to merge
359
+ * @returns Merge result
360
+ */
361
+ merge(other) {
362
+ const startTime = Date.now();
363
+ const conflicts = [];
364
+ let entriesMerged = 0;
365
+ let localChanged = false;
366
+ if (other.type !== types_1.CRDTType.ORSet) {
367
+ throw new types_1.CRDTError(`Cannot merge different CRDT types`, types_1.CRDTErrorCode.InvalidType, this.id);
368
+ }
369
+ if (other.id !== this.id) {
370
+ throw new types_1.CRDTError(`Cannot merge different CRDT instances`, types_1.CRDTErrorCode.InvalidState, this.id);
371
+ }
372
+ const otherClock = VectorClock_1.VectorClock.fromSerialized(other.vectorClock, this.replicaId);
373
+ const remoteElements = new Map();
374
+ const remoteTombstones = new Set(other.value.tombstones);
375
+ // Build map of remote elements
376
+ for (const el of other.value.elements) {
377
+ remoteElements.set(el.tag, {
378
+ value: el.value,
379
+ tag: el.tag,
380
+ addedBy: el.addedBy,
381
+ addedAt: el.addedAt,
382
+ });
383
+ }
384
+ // Add remote elements not in our tombstones
385
+ for (const [tag, element] of remoteElements) {
386
+ if (!this.tombstones.has(tag) && !this.elements.has(tag)) {
387
+ this.elements.set(tag, element);
388
+ localChanged = true;
389
+ entriesMerged++;
390
+ }
391
+ else if (this.tombstones.has(tag) && this.vectorClock.isConcurrent(otherClock)) {
392
+ // Concurrent add/remove - record conflict (add wins)
393
+ const conflict = {
394
+ conflictId: `${this.id}-${tag}-${Date.now()}`,
395
+ crdtId: this.id,
396
+ conflictType: types_1.ConflictType.AddRemove,
397
+ field: tag,
398
+ localValue: null,
399
+ remoteValue: element.value,
400
+ localClock: this.vectorClock.serialize(),
401
+ remoteClock: other.vectorClock,
402
+ resolution: {
403
+ strategy: types_1.ResolutionStrategy.KeepBoth,
404
+ resolvedValue: element.value,
405
+ reason: 'OR-Set add-wins semantics',
406
+ automatic: true,
407
+ resolvedAt: Date.now(),
408
+ },
409
+ detectedAt: Date.now(),
410
+ };
411
+ conflicts.push(conflict);
412
+ // Add wins - remove tombstone and add element
413
+ this.tombstones.delete(tag);
414
+ this.elements.set(tag, element);
415
+ localChanged = true;
416
+ entriesMerged++;
417
+ }
418
+ }
419
+ // Apply remote tombstones
420
+ for (const tag of remoteTombstones) {
421
+ if (this.elements.has(tag)) {
422
+ // Check if this is a concurrent add/remove
423
+ if (this.vectorClock.isConcurrent(otherClock)) {
424
+ // Local add wins, keep element
425
+ const conflict = {
426
+ conflictId: `${this.id}-${tag}-${Date.now()}`,
427
+ crdtId: this.id,
428
+ conflictType: types_1.ConflictType.AddRemove,
429
+ field: tag,
430
+ localValue: this.elements.get(tag)?.value,
431
+ remoteValue: null,
432
+ localClock: this.vectorClock.serialize(),
433
+ remoteClock: other.vectorClock,
434
+ resolution: {
435
+ strategy: types_1.ResolutionStrategy.PreferLocal,
436
+ resolvedValue: this.elements.get(tag)?.value,
437
+ reason: 'OR-Set add-wins semantics: local add beats remote remove',
438
+ automatic: true,
439
+ resolvedAt: Date.now(),
440
+ },
441
+ detectedAt: Date.now(),
442
+ };
443
+ conflicts.push(conflict);
444
+ }
445
+ else if (otherClock.happenedAfter(this.vectorClock)) {
446
+ // Remote happened after, apply tombstone
447
+ const element = this.elements.get(tag);
448
+ this.elements.delete(tag);
449
+ const tombstone = {
450
+ id: `ts-${tag}`,
451
+ elementId: tag,
452
+ crdtId: this.id,
453
+ deletedBy: other.origin,
454
+ vectorClock: other.vectorClock,
455
+ createdAt: Date.now(),
456
+ expiresAt: Date.now() + this.tombstoneTtl,
457
+ collected: false,
458
+ };
459
+ this.tombstones.set(tag, tombstone);
460
+ localChanged = true;
461
+ }
462
+ }
463
+ else if (!this.tombstones.has(tag)) {
464
+ // Add tombstone we didn't have
465
+ const tombstone = {
466
+ id: `ts-${tag}`,
467
+ elementId: tag,
468
+ crdtId: this.id,
469
+ deletedBy: other.origin,
470
+ vectorClock: other.vectorClock,
471
+ createdAt: Date.now(),
472
+ expiresAt: Date.now() + this.tombstoneTtl,
473
+ collected: false,
474
+ };
475
+ this.tombstones.set(tag, tombstone);
476
+ }
477
+ }
478
+ // Merge vector clocks
479
+ this.vectorClock.merge(otherClock);
480
+ // Update metadata
481
+ this.metadata.mergeCount++;
482
+ this.metadata.updatedAt = Date.now();
483
+ if (localChanged) {
484
+ this.metadata.lastModifiedBy = other.origin;
485
+ }
486
+ // Garbage collect expired tombstones
487
+ this.gcTombstones();
488
+ const stats = {
489
+ duration: Date.now() - startTime,
490
+ entriesMerged,
491
+ autoResolved: conflicts.length,
492
+ tombstonesProcessed: remoteTombstones.size,
493
+ memoryDelta: entriesMerged * 64, // Approximate
494
+ };
495
+ return {
496
+ success: true,
497
+ mergedState: this.state(),
498
+ localChanged,
499
+ conflicts,
500
+ stats,
501
+ };
502
+ }
503
+ // ============================================
504
+ // Delta Operations
505
+ // ============================================
506
+ /**
507
+ * Generate a delta update since the last sync
508
+ *
509
+ * @param since - Vector clock of last sync (optional)
510
+ * @returns Delta update or null if no changes
511
+ */
512
+ generateDelta(since) {
513
+ const sinceClock = since
514
+ ? VectorClock_1.VectorClock.fromSerialized(since, this.replicaId)
515
+ : this.lastDeltaClock;
516
+ // Check if there are any changes
517
+ if (!this.vectorClock.happenedAfter(sinceClock) &&
518
+ !this.vectorClock.isConcurrent(sinceClock)) {
519
+ return null;
520
+ }
521
+ const operations = [];
522
+ // Include recent adds
523
+ for (const element of this.elements.values()) {
524
+ if (element.addedBy === this.replicaId) {
525
+ operations.push({
526
+ op: types_1.DeltaOpType.Add,
527
+ key: element.tag,
528
+ value: {
529
+ elements: [{
530
+ tag: element.tag,
531
+ value: element.value,
532
+ addedBy: element.addedBy,
533
+ addedAt: element.addedAt,
534
+ }],
535
+ tombstones: [],
536
+ },
537
+ tag: element.tag,
538
+ replica: element.addedBy,
539
+ });
540
+ }
541
+ }
542
+ // Include recent removes
543
+ for (const [tag, tombstone] of this.tombstones) {
544
+ if (tombstone.deletedBy === this.replicaId) {
545
+ operations.push({
546
+ op: types_1.DeltaOpType.Remove,
547
+ key: tag,
548
+ tag,
549
+ replica: tombstone.deletedBy,
550
+ });
551
+ }
552
+ }
553
+ if (operations.length === 0) {
554
+ return null;
555
+ }
556
+ const delta = {
557
+ crdtId: this.id,
558
+ type: types_1.CRDTType.ORSet,
559
+ origin: this.replicaId,
560
+ vectorClock: this.vectorClock.serialize(),
561
+ operations,
562
+ sequenceNumber: this.sequenceNumber,
563
+ generatedAt: Date.now(),
564
+ };
565
+ // Update last delta clock
566
+ this.lastDeltaClock = this.vectorClock.clone();
567
+ return delta;
568
+ }
569
+ /**
570
+ * Apply a delta update
571
+ *
572
+ * @param delta - Delta to apply
573
+ * @returns True if applied successfully
574
+ */
575
+ applyDelta(delta) {
576
+ if (delta.type !== types_1.CRDTType.ORSet) {
577
+ return false;
578
+ }
579
+ if (delta.crdtId !== this.id) {
580
+ return false;
581
+ }
582
+ let changed = false;
583
+ const now = Date.now();
584
+ for (const op of delta.operations) {
585
+ if (op.op === types_1.DeltaOpType.Add && op.value && op.tag) {
586
+ const el = op.value.elements[0];
587
+ if (el && !this.elements.has(op.tag) && !this.tombstones.has(op.tag)) {
588
+ this.elements.set(op.tag, {
589
+ value: el.value,
590
+ tag: el.tag,
591
+ addedBy: el.addedBy,
592
+ addedAt: el.addedAt,
593
+ });
594
+ changed = true;
595
+ }
596
+ }
597
+ else if (op.op === types_1.DeltaOpType.Remove && op.tag) {
598
+ if (this.elements.has(op.tag)) {
599
+ this.elements.delete(op.tag);
600
+ const tombstone = {
601
+ id: `ts-${op.tag}`,
602
+ elementId: op.tag,
603
+ crdtId: this.id,
604
+ deletedBy: op.replica,
605
+ vectorClock: delta.vectorClock,
606
+ createdAt: now,
607
+ expiresAt: now + this.tombstoneTtl,
608
+ collected: false,
609
+ };
610
+ this.tombstones.set(op.tag, tombstone);
611
+ changed = true;
612
+ }
613
+ }
614
+ }
615
+ if (changed) {
616
+ const deltaClock = VectorClock_1.VectorClock.fromSerialized(delta.vectorClock, this.replicaId);
617
+ this.vectorClock.merge(deltaClock);
618
+ this.metadata.updatedAt = now;
619
+ this.metadata.lastModifiedBy = delta.origin;
620
+ }
621
+ return changed;
622
+ }
623
+ // ============================================
624
+ // Garbage Collection
625
+ // ============================================
626
+ /**
627
+ * Garbage collect expired tombstones
628
+ *
629
+ * @returns Number of tombstones collected
630
+ */
631
+ gcTombstones() {
632
+ const now = Date.now();
633
+ let collected = 0;
634
+ for (const [tag, tombstone] of this.tombstones) {
635
+ if (tombstone.expiresAt <= now) {
636
+ this.tombstones.delete(tag);
637
+ collected++;
638
+ }
639
+ }
640
+ return collected;
641
+ }
642
+ /**
643
+ * Get tombstone count
644
+ *
645
+ * @returns Number of tombstones
646
+ */
647
+ getTombstoneCount() {
648
+ return this.tombstones.size;
649
+ }
650
+ // ============================================
651
+ // Utility Methods
652
+ // ============================================
653
+ /**
654
+ * Create a deep copy of this set
655
+ *
656
+ * @returns Cloned set
657
+ */
658
+ clone() {
659
+ const cloned = new ORSet(this.replicaId, this.id, {
660
+ tombstoneTtl: this.tombstoneTtl,
661
+ compareValues: this.compareValues,
662
+ });
663
+ cloned.elements = new Map(this.elements);
664
+ cloned.tombstones = new Map(this.tombstones);
665
+ cloned.vectorClock = this.vectorClock.clone();
666
+ cloned.metadata = { ...this.metadata };
667
+ cloned.sequenceNumber = this.sequenceNumber;
668
+ cloned.lastDeltaClock = this.lastDeltaClock.clone();
669
+ return cloned;
670
+ }
671
+ /**
672
+ * Get the set ID
673
+ *
674
+ * @returns Set ID
675
+ */
676
+ getId() {
677
+ return this.id;
678
+ }
679
+ /**
680
+ * Get the local replica ID
681
+ *
682
+ * @returns Replica ID
683
+ */
684
+ getReplicaId() {
685
+ return this.replicaId;
686
+ }
687
+ /**
688
+ * Get the vector clock
689
+ *
690
+ * @returns Vector clock copy
691
+ */
692
+ getVectorClock() {
693
+ return this.vectorClock.clone();
694
+ }
695
+ /**
696
+ * Get metadata
697
+ *
698
+ * @returns Metadata copy
699
+ */
700
+ getMetadata() {
701
+ return { ...this.metadata };
702
+ }
703
+ /**
704
+ * Iterate over elements
705
+ */
706
+ *[Symbol.iterator]() {
707
+ for (const element of this.elements.values()) {
708
+ yield element.value;
709
+ }
710
+ }
711
+ /**
712
+ * String representation for debugging
713
+ *
714
+ * @returns Debug string
715
+ */
716
+ toString() {
717
+ const values = this.values().map(v => JSON.stringify(v)).slice(0, 5);
718
+ const more = this.size() > 5 ? `... +${this.size() - 5}` : '';
719
+ return `ORSet{id=${this.id}, values=[${values.join(', ')}${more}], tombstones=${this.tombstones.size}}`;
720
+ }
721
+ }
722
+ exports.ORSet = ORSet;
723
+ //# sourceMappingURL=ORSet.js.map