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,200 @@
1
+ /**
2
+ * LWW-Register (Last-Writer-Wins Register) CRDT Implementation
3
+ *
4
+ * A state-based CRDT that resolves conflicts using timestamps.
5
+ * The most recent write (highest timestamp) wins during merge.
6
+ * Replica ID is used as a tiebreaker for equal timestamps.
7
+ *
8
+ * @module edge/p2p/crdt/LWWRegister
9
+ * @version 1.0.0
10
+ */
11
+ import { ReplicaId, WallTimestamp, CRDTState, CRDTMetadata, SerializedVectorClock, SerializedLWWRegisterState, MergeResult, CRDTDelta, CRDT } from './types';
12
+ import { VectorClock } from './VectorClock';
13
+ /**
14
+ * Last-Writer-Wins Register CRDT.
15
+ *
16
+ * Properties:
17
+ * - Stores a single value with associated timestamp
18
+ * - Conflicts resolved by comparing timestamps
19
+ * - Higher replica ID wins ties (deterministic)
20
+ * - Strongly eventually consistent
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * const register = new LWWRegister<string>('replica-1', 'name');
25
+ *
26
+ * register.set('Alice');
27
+ * register.set('Bob');
28
+ *
29
+ * console.log(register.value()); // 'Bob'
30
+ *
31
+ * // Merge with remote state
32
+ * register.merge(remoteState);
33
+ * ```
34
+ */
35
+ export declare class LWWRegister<T> implements CRDT<T | undefined, SerializedLWWRegisterState<T>> {
36
+ /** Unique identifier for this register */
37
+ private readonly id;
38
+ /** Local replica ID */
39
+ private readonly replicaId;
40
+ /** Current value */
41
+ private currentValue;
42
+ /** Timestamp of current value */
43
+ private timestamp;
44
+ /** Replica that set current value */
45
+ private valueReplica;
46
+ /** Vector clock for versioning */
47
+ private vectorClock;
48
+ /** Metadata */
49
+ private metadata;
50
+ /** Sequence number for deltas */
51
+ private sequenceNumber;
52
+ /** Last delta clock for delta generation */
53
+ private lastDeltaClock;
54
+ /** Custom comparison function for timestamps */
55
+ private readonly compareTimestamp;
56
+ /**
57
+ * Create a new LWW-Register
58
+ *
59
+ * @param replicaId - Local replica identifier
60
+ * @param id - Unique register identifier
61
+ * @param initialValue - Optional initial value
62
+ * @param compareTimestamp - Optional custom timestamp comparison
63
+ */
64
+ constructor(replicaId: ReplicaId, id: string, initialValue?: T, compareTimestamp?: (a: WallTimestamp, b: WallTimestamp) => number);
65
+ /**
66
+ * Get the current value
67
+ *
68
+ * @returns Current value or undefined if not set
69
+ */
70
+ value(): T | undefined;
71
+ /**
72
+ * Set a new value with automatic timestamp
73
+ *
74
+ * @param value - New value to set
75
+ * @returns The set value
76
+ */
77
+ set(value: T): T;
78
+ /**
79
+ * Set a new value with explicit timestamp
80
+ *
81
+ * @param value - New value to set
82
+ * @param timestamp - Timestamp for this write
83
+ * @returns The set value
84
+ */
85
+ setWithTimestamp(value: T, timestamp: WallTimestamp): T;
86
+ /**
87
+ * Get the timestamp of the current value
88
+ *
89
+ * @returns Timestamp
90
+ */
91
+ getTimestamp(): WallTimestamp;
92
+ /**
93
+ * Get the replica that set the current value
94
+ *
95
+ * @returns Replica ID
96
+ */
97
+ getValueReplica(): ReplicaId;
98
+ /**
99
+ * Check if register has a value
100
+ *
101
+ * @returns True if value is set
102
+ */
103
+ hasValue(): boolean;
104
+ /**
105
+ * Clear the register value
106
+ *
107
+ * @returns Previous value
108
+ */
109
+ clear(): T | undefined;
110
+ /**
111
+ * Get the serializable state of this register
112
+ *
113
+ * @returns CRDT state
114
+ */
115
+ state(): CRDTState<SerializedLWWRegisterState<T>>;
116
+ /**
117
+ * Restore an LWW-Register from serialized state
118
+ *
119
+ * @param state - Serialized state
120
+ * @param replicaId - Local replica ID
121
+ * @returns Restored register
122
+ */
123
+ static fromState<T>(state: CRDTState<SerializedLWWRegisterState<T>>, replicaId: ReplicaId): LWWRegister<T>;
124
+ /**
125
+ * Determine if a new write should update the value
126
+ *
127
+ * @param newTimestamp - Timestamp of new value
128
+ * @param newReplica - Replica proposing new value
129
+ * @returns True if should update
130
+ */
131
+ private shouldUpdate;
132
+ /**
133
+ * Merge with another LWW-Register state
134
+ *
135
+ * The value with the highest timestamp wins.
136
+ * Equal timestamps are resolved by comparing replica IDs.
137
+ *
138
+ * @param other - Other register state to merge
139
+ * @returns Merge result
140
+ */
141
+ merge(other: CRDTState<SerializedLWWRegisterState<T>>): MergeResult<SerializedLWWRegisterState<T>>;
142
+ /**
143
+ * Generate a delta update since the last sync
144
+ *
145
+ * @param since - Vector clock of last sync (optional)
146
+ * @returns Delta update or null if no changes
147
+ */
148
+ generateDelta(since?: SerializedVectorClock): CRDTDelta<SerializedLWWRegisterState<T>> | null;
149
+ /**
150
+ * Apply a delta update
151
+ *
152
+ * @param delta - Delta to apply
153
+ * @returns True if applied successfully
154
+ */
155
+ applyDelta(delta: CRDTDelta<SerializedLWWRegisterState<T>>): boolean;
156
+ /**
157
+ * Create a deep copy of this register
158
+ *
159
+ * @returns Cloned register
160
+ */
161
+ clone(): LWWRegister<T>;
162
+ /**
163
+ * Get the register ID
164
+ *
165
+ * @returns Register ID
166
+ */
167
+ getId(): string;
168
+ /**
169
+ * Get the local replica ID
170
+ *
171
+ * @returns Replica ID
172
+ */
173
+ getReplicaId(): ReplicaId;
174
+ /**
175
+ * Get the vector clock
176
+ *
177
+ * @returns Vector clock copy
178
+ */
179
+ getVectorClock(): VectorClock;
180
+ /**
181
+ * Get metadata
182
+ *
183
+ * @returns Metadata copy
184
+ */
185
+ getMetadata(): CRDTMetadata;
186
+ /**
187
+ * Check if this register equals another
188
+ *
189
+ * @param other - Register to compare
190
+ * @returns True if values and timestamps are equal
191
+ */
192
+ equals(other: LWWRegister<T>): boolean;
193
+ /**
194
+ * String representation for debugging
195
+ *
196
+ * @returns Debug string
197
+ */
198
+ toString(): string;
199
+ }
200
+ //# sourceMappingURL=LWWRegister.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LWWRegister.d.ts","sourceRoot":"","sources":["../../../../src/edge/p2p/crdt/LWWRegister.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,456 @@
1
+ "use strict";
2
+ /**
3
+ * LWW-Register (Last-Writer-Wins Register) CRDT Implementation
4
+ *
5
+ * A state-based CRDT that resolves conflicts using timestamps.
6
+ * The most recent write (highest timestamp) wins during merge.
7
+ * Replica ID is used as a tiebreaker for equal timestamps.
8
+ *
9
+ * @module edge/p2p/crdt/LWWRegister
10
+ * @version 1.0.0
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.LWWRegister = void 0;
14
+ const types_1 = require("./types");
15
+ const VectorClock_1 = require("./VectorClock");
16
+ // ============================================
17
+ // LWWRegister Class
18
+ // ============================================
19
+ /**
20
+ * Last-Writer-Wins Register CRDT.
21
+ *
22
+ * Properties:
23
+ * - Stores a single value with associated timestamp
24
+ * - Conflicts resolved by comparing timestamps
25
+ * - Higher replica ID wins ties (deterministic)
26
+ * - Strongly eventually consistent
27
+ *
28
+ * @example
29
+ * ```typescript
30
+ * const register = new LWWRegister<string>('replica-1', 'name');
31
+ *
32
+ * register.set('Alice');
33
+ * register.set('Bob');
34
+ *
35
+ * console.log(register.value()); // 'Bob'
36
+ *
37
+ * // Merge with remote state
38
+ * register.merge(remoteState);
39
+ * ```
40
+ */
41
+ class LWWRegister {
42
+ /**
43
+ * Create a new LWW-Register
44
+ *
45
+ * @param replicaId - Local replica identifier
46
+ * @param id - Unique register identifier
47
+ * @param initialValue - Optional initial value
48
+ * @param compareTimestamp - Optional custom timestamp comparison
49
+ */
50
+ constructor(replicaId, id, initialValue, compareTimestamp) {
51
+ this.id = id;
52
+ this.replicaId = replicaId;
53
+ this.currentValue = initialValue;
54
+ this.timestamp = initialValue !== undefined ? Date.now() : 0;
55
+ this.valueReplica = replicaId;
56
+ this.vectorClock = new VectorClock_1.VectorClock(replicaId);
57
+ this.sequenceNumber = 0;
58
+ this.lastDeltaClock = this.vectorClock.clone();
59
+ this.compareTimestamp = compareTimestamp ?? ((a, b) => a - b);
60
+ const now = Date.now();
61
+ this.metadata = {
62
+ createdAt: now,
63
+ updatedAt: now,
64
+ mergeCount: 0,
65
+ lastModifiedBy: replicaId,
66
+ };
67
+ if (initialValue !== undefined) {
68
+ this.vectorClock.increment();
69
+ }
70
+ }
71
+ // ============================================
72
+ // Core Operations
73
+ // ============================================
74
+ /**
75
+ * Get the current value
76
+ *
77
+ * @returns Current value or undefined if not set
78
+ */
79
+ value() {
80
+ return this.currentValue;
81
+ }
82
+ /**
83
+ * Set a new value with automatic timestamp
84
+ *
85
+ * @param value - New value to set
86
+ * @returns The set value
87
+ */
88
+ set(value) {
89
+ return this.setWithTimestamp(value, Date.now());
90
+ }
91
+ /**
92
+ * Set a new value with explicit timestamp
93
+ *
94
+ * @param value - New value to set
95
+ * @param timestamp - Timestamp for this write
96
+ * @returns The set value
97
+ */
98
+ setWithTimestamp(value, timestamp) {
99
+ // For local writes, always accept if timestamp is >= current
100
+ // (same replica can always update its own value)
101
+ // For remote writes (via merge), use shouldUpdate for proper LWW semantics
102
+ const shouldAccept = timestamp >= this.timestamp;
103
+ if (shouldAccept) {
104
+ this.currentValue = value;
105
+ this.timestamp = timestamp;
106
+ this.valueReplica = this.replicaId;
107
+ this.vectorClock.increment();
108
+ this.metadata.updatedAt = Date.now();
109
+ this.metadata.lastModifiedBy = this.replicaId;
110
+ this.sequenceNumber++;
111
+ }
112
+ return this.currentValue;
113
+ }
114
+ /**
115
+ * Get the timestamp of the current value
116
+ *
117
+ * @returns Timestamp
118
+ */
119
+ getTimestamp() {
120
+ return this.timestamp;
121
+ }
122
+ /**
123
+ * Get the replica that set the current value
124
+ *
125
+ * @returns Replica ID
126
+ */
127
+ getValueReplica() {
128
+ return this.valueReplica;
129
+ }
130
+ /**
131
+ * Check if register has a value
132
+ *
133
+ * @returns True if value is set
134
+ */
135
+ hasValue() {
136
+ return this.currentValue !== undefined;
137
+ }
138
+ /**
139
+ * Clear the register value
140
+ *
141
+ * @returns Previous value
142
+ */
143
+ clear() {
144
+ const prev = this.currentValue;
145
+ this.currentValue = undefined;
146
+ this.timestamp = Date.now();
147
+ this.valueReplica = this.replicaId;
148
+ this.vectorClock.increment();
149
+ this.metadata.updatedAt = Date.now();
150
+ this.metadata.lastModifiedBy = this.replicaId;
151
+ this.sequenceNumber++;
152
+ return prev;
153
+ }
154
+ // ============================================
155
+ // State Management
156
+ // ============================================
157
+ /**
158
+ * Get the serializable state of this register
159
+ *
160
+ * @returns CRDT state
161
+ */
162
+ state() {
163
+ return {
164
+ type: types_1.CRDTType.LWWRegister,
165
+ id: this.id,
166
+ vectorClock: this.vectorClock.serialize(),
167
+ origin: this.replicaId,
168
+ value: {
169
+ value: this.currentValue,
170
+ timestamp: this.timestamp,
171
+ replica: this.valueReplica,
172
+ },
173
+ metadata: { ...this.metadata },
174
+ stateVersion: 1,
175
+ };
176
+ }
177
+ /**
178
+ * Restore an LWW-Register from serialized state
179
+ *
180
+ * @param state - Serialized state
181
+ * @param replicaId - Local replica ID
182
+ * @returns Restored register
183
+ */
184
+ static fromState(state, replicaId) {
185
+ if (state.type !== types_1.CRDTType.LWWRegister) {
186
+ throw new types_1.CRDTError(`Invalid CRDT type: expected ${types_1.CRDTType.LWWRegister}, got ${state.type}`, types_1.CRDTErrorCode.InvalidType, state.id);
187
+ }
188
+ const register = new LWWRegister(replicaId, state.id);
189
+ // Restore value
190
+ register.currentValue = state.value.value;
191
+ register.timestamp = state.value.timestamp;
192
+ register.valueReplica = state.value.replica;
193
+ // Restore vector clock
194
+ register.vectorClock = VectorClock_1.VectorClock.fromSerialized(state.vectorClock, replicaId);
195
+ // Restore metadata
196
+ register.metadata = { ...state.metadata };
197
+ return register;
198
+ }
199
+ // ============================================
200
+ // Merge Operations
201
+ // ============================================
202
+ /**
203
+ * Determine if a new write should update the value
204
+ *
205
+ * @param newTimestamp - Timestamp of new value
206
+ * @param newReplica - Replica proposing new value
207
+ * @returns True if should update
208
+ */
209
+ shouldUpdate(newTimestamp, newReplica) {
210
+ const cmp = this.compareTimestamp(newTimestamp, this.timestamp);
211
+ if (cmp > 0) {
212
+ // New timestamp is higher
213
+ return true;
214
+ }
215
+ else if (cmp === 0) {
216
+ // Equal timestamps, use replica ID as tiebreaker
217
+ return newReplica > this.valueReplica;
218
+ }
219
+ return false;
220
+ }
221
+ /**
222
+ * Merge with another LWW-Register state
223
+ *
224
+ * The value with the highest timestamp wins.
225
+ * Equal timestamps are resolved by comparing replica IDs.
226
+ *
227
+ * @param other - Other register state to merge
228
+ * @returns Merge result
229
+ */
230
+ merge(other) {
231
+ const startTime = Date.now();
232
+ const conflicts = [];
233
+ if (other.type !== types_1.CRDTType.LWWRegister) {
234
+ throw new types_1.CRDTError(`Cannot merge different CRDT types`, types_1.CRDTErrorCode.InvalidType, this.id);
235
+ }
236
+ if (other.id !== this.id) {
237
+ throw new types_1.CRDTError(`Cannot merge different CRDT instances`, types_1.CRDTErrorCode.InvalidState, this.id);
238
+ }
239
+ const otherValue = other.value;
240
+ let localChanged = false;
241
+ // Check for concurrent writes (potential conflict)
242
+ const otherClock = VectorClock_1.VectorClock.fromSerialized(other.vectorClock, this.replicaId);
243
+ if (this.vectorClock.isConcurrent(otherClock)) {
244
+ // Record conflict
245
+ const conflict = {
246
+ conflictId: `${this.id}-${Date.now()}`,
247
+ crdtId: this.id,
248
+ conflictType: types_1.ConflictType.ConcurrentUpdate,
249
+ field: 'value',
250
+ localValue: this.currentValue,
251
+ remoteValue: otherValue.value,
252
+ localClock: this.vectorClock.serialize(),
253
+ remoteClock: other.vectorClock,
254
+ detectedAt: Date.now(),
255
+ };
256
+ // Determine winner
257
+ const winner = this.shouldUpdate(otherValue.timestamp, otherValue.replica)
258
+ ? 'remote'
259
+ : 'local';
260
+ conflict.resolution = {
261
+ strategy: types_1.ResolutionStrategy.LastWriterWins,
262
+ resolvedValue: winner === 'remote' ? otherValue.value : this.currentValue,
263
+ winner: winner === 'remote' ? otherValue.replica : this.valueReplica,
264
+ reason: `LWW: ${winner} has ${winner === 'remote' ? 'later' : 'earlier or equal'} timestamp`,
265
+ automatic: true,
266
+ resolvedAt: Date.now(),
267
+ };
268
+ conflicts.push(conflict);
269
+ }
270
+ // Apply LWW merge
271
+ if (this.shouldUpdate(otherValue.timestamp, otherValue.replica)) {
272
+ this.currentValue = otherValue.value;
273
+ this.timestamp = otherValue.timestamp;
274
+ this.valueReplica = otherValue.replica;
275
+ localChanged = true;
276
+ }
277
+ // Merge vector clocks
278
+ this.vectorClock.merge(otherClock);
279
+ // Update metadata
280
+ this.metadata.mergeCount++;
281
+ this.metadata.updatedAt = Date.now();
282
+ if (localChanged) {
283
+ this.metadata.lastModifiedBy = other.origin;
284
+ }
285
+ const stats = {
286
+ duration: Date.now() - startTime,
287
+ entriesMerged: 1,
288
+ autoResolved: conflicts.length,
289
+ tombstonesProcessed: 0,
290
+ memoryDelta: 0,
291
+ };
292
+ return {
293
+ success: true,
294
+ mergedState: this.state(),
295
+ localChanged,
296
+ conflicts,
297
+ stats,
298
+ };
299
+ }
300
+ // ============================================
301
+ // Delta Operations
302
+ // ============================================
303
+ /**
304
+ * Generate a delta update since the last sync
305
+ *
306
+ * @param since - Vector clock of last sync (optional)
307
+ * @returns Delta update or null if no changes
308
+ */
309
+ generateDelta(since) {
310
+ const sinceClock = since
311
+ ? VectorClock_1.VectorClock.fromSerialized(since, this.replicaId)
312
+ : this.lastDeltaClock;
313
+ // Check if there are any changes
314
+ if (!this.vectorClock.happenedAfter(sinceClock) &&
315
+ !this.vectorClock.isConcurrent(sinceClock)) {
316
+ return null;
317
+ }
318
+ const operations = [{
319
+ op: types_1.DeltaOpType.Set,
320
+ value: {
321
+ value: this.currentValue,
322
+ timestamp: this.timestamp,
323
+ replica: this.valueReplica,
324
+ },
325
+ timestamp: this.timestamp,
326
+ replica: this.valueReplica,
327
+ }];
328
+ const delta = {
329
+ crdtId: this.id,
330
+ type: types_1.CRDTType.LWWRegister,
331
+ origin: this.replicaId,
332
+ vectorClock: this.vectorClock.serialize(),
333
+ operations,
334
+ sequenceNumber: this.sequenceNumber,
335
+ generatedAt: Date.now(),
336
+ };
337
+ // Update last delta clock
338
+ this.lastDeltaClock = this.vectorClock.clone();
339
+ return delta;
340
+ }
341
+ /**
342
+ * Apply a delta update
343
+ *
344
+ * @param delta - Delta to apply
345
+ * @returns True if applied successfully
346
+ */
347
+ applyDelta(delta) {
348
+ if (delta.type !== types_1.CRDTType.LWWRegister) {
349
+ return false;
350
+ }
351
+ if (delta.crdtId !== this.id) {
352
+ return false;
353
+ }
354
+ let changed = false;
355
+ for (const op of delta.operations) {
356
+ if (op.op === types_1.DeltaOpType.Set && op.value && op.timestamp && op.replica) {
357
+ if (this.shouldUpdate(op.timestamp, op.replica)) {
358
+ this.currentValue = op.value.value;
359
+ this.timestamp = op.timestamp;
360
+ this.valueReplica = op.replica;
361
+ changed = true;
362
+ }
363
+ }
364
+ }
365
+ if (changed) {
366
+ const deltaClock = VectorClock_1.VectorClock.fromSerialized(delta.vectorClock, this.replicaId);
367
+ this.vectorClock.merge(deltaClock);
368
+ this.metadata.updatedAt = Date.now();
369
+ this.metadata.lastModifiedBy = delta.origin;
370
+ }
371
+ return changed;
372
+ }
373
+ // ============================================
374
+ // Utility Methods
375
+ // ============================================
376
+ /**
377
+ * Create a deep copy of this register
378
+ *
379
+ * @returns Cloned register
380
+ */
381
+ clone() {
382
+ const cloned = new LWWRegister(this.replicaId, this.id);
383
+ cloned.currentValue = this.currentValue;
384
+ cloned.timestamp = this.timestamp;
385
+ cloned.valueReplica = this.valueReplica;
386
+ cloned.vectorClock = this.vectorClock.clone();
387
+ cloned.metadata = { ...this.metadata };
388
+ cloned.sequenceNumber = this.sequenceNumber;
389
+ cloned.lastDeltaClock = this.lastDeltaClock.clone();
390
+ return cloned;
391
+ }
392
+ /**
393
+ * Get the register ID
394
+ *
395
+ * @returns Register ID
396
+ */
397
+ getId() {
398
+ return this.id;
399
+ }
400
+ /**
401
+ * Get the local replica ID
402
+ *
403
+ * @returns Replica ID
404
+ */
405
+ getReplicaId() {
406
+ return this.replicaId;
407
+ }
408
+ /**
409
+ * Get the vector clock
410
+ *
411
+ * @returns Vector clock copy
412
+ */
413
+ getVectorClock() {
414
+ return this.vectorClock.clone();
415
+ }
416
+ /**
417
+ * Get metadata
418
+ *
419
+ * @returns Metadata copy
420
+ */
421
+ getMetadata() {
422
+ return { ...this.metadata };
423
+ }
424
+ /**
425
+ * Check if this register equals another
426
+ *
427
+ * @param other - Register to compare
428
+ * @returns True if values and timestamps are equal
429
+ */
430
+ equals(other) {
431
+ if (this.id !== other.id) {
432
+ return false;
433
+ }
434
+ if (this.timestamp !== other.timestamp) {
435
+ return false;
436
+ }
437
+ if (this.valueReplica !== other.valueReplica) {
438
+ return false;
439
+ }
440
+ // Deep compare values
441
+ return JSON.stringify(this.currentValue) === JSON.stringify(other.currentValue);
442
+ }
443
+ /**
444
+ * String representation for debugging
445
+ *
446
+ * @returns Debug string
447
+ */
448
+ toString() {
449
+ const valueStr = this.currentValue !== undefined
450
+ ? JSON.stringify(this.currentValue).slice(0, 50)
451
+ : 'undefined';
452
+ return `LWWRegister{id=${this.id}, value=${valueStr}, ts=${this.timestamp}, replica=${this.valueReplica}}`;
453
+ }
454
+ }
455
+ exports.LWWRegister = LWWRegister;
456
+ //# sourceMappingURL=LWWRegister.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LWWRegister.js","sourceRoot":"","sources":["../../../../src/edge/p2p/crdt/LWWRegister.ts"],"names":[],"mappings":"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"}