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,560 @@
1
+ "use strict";
2
+ /**
3
+ * Connectivity Tester for @ruvector/edge P2P
4
+ *
5
+ * Tests connectivity between peers, measures RTT, ranks connection candidates,
6
+ * and provides connectivity recommendations.
7
+ *
8
+ * @module edge/p2p/nat/ConnectivityTester
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ConnectivityTester = void 0;
13
+ const types_1 = require("./types");
14
+ /**
15
+ * Connectivity Tester - Tests and ranks peer connectivity
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const tester = new ConnectivityTester({
20
+ * timeout: 15000,
21
+ * pingCount: 10,
22
+ * maxAcceptableRtt: 500,
23
+ * });
24
+ *
25
+ * // Test connectivity to peer
26
+ * const result = await tester.test(peerId, {
27
+ * dataChannel: rtcDataChannel,
28
+ * candidates: [...],
29
+ * });
30
+ *
31
+ * console.log('Connected:', result.connected);
32
+ * console.log('RTT:', result.rttMs);
33
+ *
34
+ * // Get recommendations
35
+ * const recommendation = tester.getRecommendation(candidates, localNat, remoteNat);
36
+ * ```
37
+ */
38
+ class ConnectivityTester {
39
+ /**
40
+ * Create a new Connectivity Tester
41
+ *
42
+ * @param config - Tester configuration
43
+ */
44
+ constructor(config = {}) {
45
+ this.eventHandlers = new Map();
46
+ this.activeTests = new Map();
47
+ this.config = {
48
+ ...types_1.DEFAULT_CONNECTIVITY_TESTER_CONFIG,
49
+ ...config,
50
+ };
51
+ }
52
+ /**
53
+ * Test connectivity to a peer
54
+ *
55
+ * @param peerId - Peer to test
56
+ * @param options - Test options
57
+ * @returns Promise resolving to test result
58
+ */
59
+ async test(peerId, options) {
60
+ // Cancel any existing test to this peer
61
+ this.cancelTest(peerId);
62
+ const abortController = new AbortController();
63
+ this.activeTests.set(peerId, abortController);
64
+ const startTime = Date.now();
65
+ try {
66
+ // Wait for data channel to be open
67
+ if (options.dataChannel.readyState !== 'open') {
68
+ await this.waitForChannelOpen(options.dataChannel, abortController.signal);
69
+ }
70
+ // Perform ping tests
71
+ const pingResults = await this.performPingTests(options.dataChannel, abortController.signal);
72
+ // Calculate statistics
73
+ const stats = this.calculateStats(pingResults);
74
+ // Optional bandwidth test
75
+ let bandwidthKbps;
76
+ if (this.config.enableBandwidthTest) {
77
+ const bandwidthResult = await this.measureBandwidth(options.dataChannel, abortController.signal);
78
+ bandwidthKbps = (bandwidthResult.uploadKbps + bandwidthResult.downloadKbps) / 2;
79
+ }
80
+ // Determine connection path from candidates
81
+ const path = this.determineConnectionPath(options.candidates);
82
+ // Get successful candidates
83
+ const successfulCandidates = options.candidates.filter((c) => c.type === 'host' || c.type === 'srflx' || c.type === 'relay');
84
+ const result = {
85
+ peerId,
86
+ connected: stats.successRate > 0.5,
87
+ path,
88
+ rttMs: stats.avgRtt,
89
+ packetLossPercent: (1 - stats.successRate) * 100,
90
+ jitterMs: stats.jitter,
91
+ bandwidthKbps,
92
+ successfulCandidates,
93
+ durationMs: Date.now() - startTime,
94
+ testedAt: Date.now(),
95
+ };
96
+ this.emitEvent(types_1.NATEventType.ConnectivityTestCompleted, result);
97
+ return result;
98
+ }
99
+ catch (error) {
100
+ return {
101
+ peerId,
102
+ connected: false,
103
+ path: types_1.ConnectionPath.Failed,
104
+ rttMs: 0,
105
+ packetLossPercent: 100,
106
+ jitterMs: 0,
107
+ successfulCandidates: [],
108
+ durationMs: Date.now() - startTime,
109
+ testedAt: Date.now(),
110
+ };
111
+ }
112
+ finally {
113
+ this.activeTests.delete(peerId);
114
+ }
115
+ }
116
+ /**
117
+ * Cancel an ongoing test
118
+ *
119
+ * @param peerId - Peer ID of test to cancel
120
+ */
121
+ cancelTest(peerId) {
122
+ const controller = this.activeTests.get(peerId);
123
+ if (controller) {
124
+ controller.abort();
125
+ this.activeTests.delete(peerId);
126
+ }
127
+ }
128
+ /**
129
+ * Cancel all ongoing tests
130
+ */
131
+ cancelAllTests() {
132
+ this.activeTests.forEach((controller) => {
133
+ controller.abort();
134
+ });
135
+ this.activeTests.clear();
136
+ }
137
+ /**
138
+ * Rank ICE candidates by quality
139
+ *
140
+ * @param candidates - Candidates to rank
141
+ * @param rttMeasurements - Optional RTT measurements per candidate
142
+ * @returns Ranked candidates
143
+ */
144
+ rankCandidates(candidates, rttMeasurements) {
145
+ const rankings = [];
146
+ for (const candidate of candidates) {
147
+ const rtt = rttMeasurements?.get(candidate.candidate) ?? this.estimateRtt(candidate);
148
+ const ranking = this.calculateCandidateRanking(candidate, rtt);
149
+ rankings.push(ranking);
150
+ }
151
+ // Sort by score descending
152
+ rankings.sort((a, b) => b.score - a.score);
153
+ // Mark top candidate as recommended
154
+ if (rankings.length > 0) {
155
+ rankings[0].recommended = true;
156
+ }
157
+ return rankings;
158
+ }
159
+ /**
160
+ * Get connectivity recommendation
161
+ *
162
+ * @param localCandidates - Local ICE candidates
163
+ * @param remoteCandidates - Remote ICE candidates
164
+ * @param localNat - Local NAT type
165
+ * @param remoteNat - Remote NAT type
166
+ * @param turnServers - Available TURN servers
167
+ * @returns Connectivity recommendation
168
+ */
169
+ getRecommendation(localCandidates, remoteCandidates, localNat, remoteNat, turnServers = []) {
170
+ // Estimate success probability
171
+ const directProbability = types_1.NAT_CONNECTIVITY_MATRIX[localNat]?.[remoteNat] ?? 0.3;
172
+ // Rank candidates
173
+ const localRankings = this.rankCandidates(localCandidates);
174
+ const remoteRankings = this.rankCandidates(remoteCandidates);
175
+ // Separate by type
176
+ const directCandidates = localCandidates.filter((c) => c.type === 'host' || c.type === 'srflx');
177
+ const relayCandidates = localCandidates.filter((c) => c.type === 'relay');
178
+ // Determine recommended approach
179
+ let approach;
180
+ let reasoning;
181
+ if (directProbability >= 0.7) {
182
+ approach = 'direct';
183
+ reasoning = `High direct connectivity probability (${Math.round(directProbability * 100)}%) based on NAT types`;
184
+ }
185
+ else if (directProbability >= 0.4) {
186
+ approach = 'hybrid';
187
+ reasoning = `Moderate connectivity probability (${Math.round(directProbability * 100)}%) - try direct first, fallback to TURN`;
188
+ }
189
+ else if (turnServers.length > 0 || relayCandidates.length > 0) {
190
+ approach = 'turn';
191
+ reasoning = `Low direct connectivity probability (${Math.round(directProbability * 100)}%) - TURN relay recommended`;
192
+ }
193
+ else {
194
+ approach = 'abort';
195
+ reasoning = `Low connectivity probability and no TURN servers available`;
196
+ }
197
+ // Select recommended TURN server
198
+ const turnServer = turnServers.length > 0
199
+ ? turnServers.sort((a, b) => (a.priority ?? 0) - (b.priority ?? 0))[0]
200
+ : undefined;
201
+ return {
202
+ approach,
203
+ primaryCandidates: approach === 'turn'
204
+ ? relayCandidates.length > 0
205
+ ? relayCandidates
206
+ : directCandidates
207
+ : directCandidates,
208
+ fallbackCandidates: approach === 'hybrid' ? relayCandidates : [],
209
+ turnServer,
210
+ successProbability: approach === 'turn' ? 0.95 : approach === 'hybrid' ? 0.85 : directProbability,
211
+ reasoning,
212
+ };
213
+ }
214
+ /**
215
+ * Test RTT to a specific endpoint
216
+ *
217
+ * @param dataChannel - Data channel to use
218
+ * @param pingCount - Number of pings
219
+ * @returns Promise resolving to average RTT
220
+ */
221
+ async measureRtt(dataChannel, pingCount = this.config.pingCount) {
222
+ const results = await this.performPingTests(dataChannel);
223
+ const successfulPings = results.filter((r) => r.success);
224
+ if (successfulPings.length === 0) {
225
+ return Infinity;
226
+ }
227
+ return successfulPings.reduce((sum, r) => sum + r.rttMs, 0) / successfulPings.length;
228
+ }
229
+ /**
230
+ * Check if connectivity meets quality thresholds
231
+ *
232
+ * @param result - Test result to check
233
+ * @returns Whether connectivity is acceptable
234
+ */
235
+ isAcceptable(result) {
236
+ return (result.connected &&
237
+ result.rttMs <= this.config.maxAcceptableRtt &&
238
+ result.packetLossPercent <= this.config.maxAcceptablePacketLoss);
239
+ }
240
+ /**
241
+ * Register event handler
242
+ *
243
+ * @param type - Event type to handle
244
+ * @param handler - Event handler function
245
+ * @returns Unsubscribe function
246
+ */
247
+ on(type, handler) {
248
+ if (!this.eventHandlers.has(type)) {
249
+ this.eventHandlers.set(type, new Set());
250
+ }
251
+ this.eventHandlers.get(type).add(handler);
252
+ return () => this.eventHandlers.get(type)?.delete(handler);
253
+ }
254
+ /**
255
+ * Get current configuration
256
+ */
257
+ getConfig() {
258
+ return { ...this.config };
259
+ }
260
+ // ============================================
261
+ // Private Methods
262
+ // ============================================
263
+ async waitForChannelOpen(channel, signal) {
264
+ if (channel.readyState === 'open')
265
+ return;
266
+ return new Promise((resolve, reject) => {
267
+ const timeout = setTimeout(() => {
268
+ channel.removeEventListener('open', onOpen);
269
+ reject(new Error('Data channel open timeout'));
270
+ }, this.config.timeout);
271
+ const onOpen = () => {
272
+ clearTimeout(timeout);
273
+ resolve();
274
+ };
275
+ const onAbort = () => {
276
+ clearTimeout(timeout);
277
+ channel.removeEventListener('open', onOpen);
278
+ reject(new Error('Test cancelled'));
279
+ };
280
+ if (signal) {
281
+ signal.addEventListener('abort', onAbort, { once: true });
282
+ }
283
+ channel.addEventListener('open', onOpen, { once: true });
284
+ });
285
+ }
286
+ async performPingTests(channel, signal) {
287
+ const results = [];
288
+ for (let seq = 0; seq < this.config.pingCount; seq++) {
289
+ if (signal?.aborted)
290
+ break;
291
+ const result = await this.sendPing(channel, seq, signal);
292
+ results.push(result);
293
+ // Delay between pings
294
+ if (seq < this.config.pingCount - 1) {
295
+ await this.delay(this.config.pingInterval);
296
+ }
297
+ }
298
+ return results;
299
+ }
300
+ async sendPing(channel, seq, signal) {
301
+ return new Promise((resolve) => {
302
+ const pingId = `ping-${seq}-${Date.now()}`;
303
+ const startTime = performance.now();
304
+ const timeout = setTimeout(() => {
305
+ channel.removeEventListener('message', onMessage);
306
+ resolve({
307
+ seq,
308
+ rttMs: Infinity,
309
+ success: false,
310
+ timestamp: Date.now(),
311
+ });
312
+ }, this.config.timeout / this.config.pingCount);
313
+ const onMessage = (event) => {
314
+ try {
315
+ const data = typeof event.data === 'string'
316
+ ? JSON.parse(event.data)
317
+ : event.data;
318
+ if (data.type === 'pong' && data.id === pingId) {
319
+ clearTimeout(timeout);
320
+ channel.removeEventListener('message', onMessage);
321
+ resolve({
322
+ seq,
323
+ rttMs: performance.now() - startTime,
324
+ success: true,
325
+ timestamp: Date.now(),
326
+ });
327
+ }
328
+ }
329
+ catch {
330
+ // Ignore parse errors
331
+ }
332
+ };
333
+ const onAbort = () => {
334
+ clearTimeout(timeout);
335
+ channel.removeEventListener('message', onMessage);
336
+ resolve({
337
+ seq,
338
+ rttMs: Infinity,
339
+ success: false,
340
+ timestamp: Date.now(),
341
+ });
342
+ };
343
+ if (signal) {
344
+ signal.addEventListener('abort', onAbort, { once: true });
345
+ }
346
+ channel.addEventListener('message', onMessage);
347
+ // Send ping
348
+ try {
349
+ channel.send(JSON.stringify({
350
+ type: 'ping',
351
+ id: pingId,
352
+ seq,
353
+ timestamp: Date.now(),
354
+ }));
355
+ }
356
+ catch {
357
+ clearTimeout(timeout);
358
+ channel.removeEventListener('message', onMessage);
359
+ resolve({
360
+ seq,
361
+ rttMs: Infinity,
362
+ success: false,
363
+ timestamp: Date.now(),
364
+ });
365
+ }
366
+ });
367
+ }
368
+ async measureBandwidth(channel, signal) {
369
+ const testSize = this.config.enableBandwidthTest ? 64 * 1024 : 0; // 64KB test
370
+ const startTime = performance.now();
371
+ // Generate test data
372
+ const testData = new Uint8Array(testSize);
373
+ for (let i = 0; i < testSize; i++) {
374
+ testData[i] = i % 256;
375
+ }
376
+ return new Promise((resolve) => {
377
+ const timeout = setTimeout(() => {
378
+ resolve({
379
+ uploadKbps: 0,
380
+ downloadKbps: 0,
381
+ durationMs: performance.now() - startTime,
382
+ bytesTransferred: 0,
383
+ });
384
+ }, 10000);
385
+ let bytesReceived = 0;
386
+ const uploadStart = performance.now();
387
+ const onMessage = (event) => {
388
+ if (event.data instanceof ArrayBuffer) {
389
+ bytesReceived += event.data.byteLength;
390
+ }
391
+ else if (typeof event.data === 'string') {
392
+ try {
393
+ const data = JSON.parse(event.data);
394
+ if (data.type === 'bandwidth_ack') {
395
+ clearTimeout(timeout);
396
+ channel.removeEventListener('message', onMessage);
397
+ const duration = performance.now() - uploadStart;
398
+ const uploadKbps = (testSize * 8) / duration; // bits per ms = kbps
399
+ resolve({
400
+ uploadKbps,
401
+ downloadKbps: uploadKbps, // Assume symmetric for simplicity
402
+ durationMs: duration,
403
+ bytesTransferred: testSize + bytesReceived,
404
+ });
405
+ }
406
+ }
407
+ catch {
408
+ // Ignore
409
+ }
410
+ }
411
+ };
412
+ channel.addEventListener('message', onMessage);
413
+ // Send test data
414
+ try {
415
+ channel.send(testData.buffer);
416
+ channel.send(JSON.stringify({ type: 'bandwidth_test', size: testSize }));
417
+ }
418
+ catch {
419
+ clearTimeout(timeout);
420
+ channel.removeEventListener('message', onMessage);
421
+ resolve({
422
+ uploadKbps: 0,
423
+ downloadKbps: 0,
424
+ durationMs: performance.now() - startTime,
425
+ bytesTransferred: 0,
426
+ });
427
+ }
428
+ });
429
+ }
430
+ calculateStats(results) {
431
+ const successful = results.filter((r) => r.success);
432
+ if (successful.length === 0) {
433
+ return {
434
+ avgRtt: Infinity,
435
+ minRtt: Infinity,
436
+ maxRtt: Infinity,
437
+ jitter: 0,
438
+ successRate: 0,
439
+ };
440
+ }
441
+ const rtts = successful.map((r) => r.rttMs);
442
+ const avgRtt = rtts.reduce((a, b) => a + b, 0) / rtts.length;
443
+ const minRtt = Math.min(...rtts);
444
+ const maxRtt = Math.max(...rtts);
445
+ // Calculate jitter as average deviation from mean
446
+ const jitter = rtts.reduce((sum, rtt) => sum + Math.abs(rtt - avgRtt), 0) / rtts.length;
447
+ return {
448
+ avgRtt,
449
+ minRtt,
450
+ maxRtt,
451
+ jitter,
452
+ successRate: successful.length / results.length,
453
+ };
454
+ }
455
+ determineConnectionPath(candidates) {
456
+ // Check candidate types to determine path
457
+ const hasRelay = candidates.some((c) => c.type === 'relay');
458
+ const hasDirect = candidates.some((c) => c.type === 'host' || c.type === 'srflx');
459
+ if (hasRelay && !hasDirect) {
460
+ return types_1.ConnectionPath.Relay;
461
+ }
462
+ else if (hasDirect) {
463
+ return types_1.ConnectionPath.Direct;
464
+ }
465
+ return types_1.ConnectionPath.Pending;
466
+ }
467
+ calculateCandidateRanking(candidate, rttMs) {
468
+ // Calculate component scores (0-100)
469
+ const rttScore = this.calculateRttScore(rttMs);
470
+ const reliabilityScore = this.calculateReliabilityScore(candidate);
471
+ const pathScore = this.calculatePathScore(candidate.type);
472
+ // Weighted average
473
+ const score = rttScore * 0.4 + reliabilityScore * 0.3 + pathScore * 0.3;
474
+ return {
475
+ candidate,
476
+ score,
477
+ rttScore,
478
+ reliabilityScore,
479
+ pathScore,
480
+ recommended: false,
481
+ };
482
+ }
483
+ calculateRttScore(rttMs) {
484
+ if (rttMs === Infinity)
485
+ return 0;
486
+ // Score decreases with RTT, max 100 at 0ms, min ~0 at 1000ms
487
+ return Math.max(0, 100 - (rttMs / 10));
488
+ }
489
+ calculateReliabilityScore(candidate) {
490
+ // Base score on candidate type and protocol
491
+ let score = 50;
492
+ // Prefer TCP for reliability
493
+ if (candidate.protocol === 'tcp') {
494
+ score += 20;
495
+ }
496
+ // Relay candidates are more reliable but slower
497
+ if (candidate.type === 'relay') {
498
+ score += 30;
499
+ }
500
+ // Host candidates may be less reliable in NAT scenarios
501
+ if (candidate.type === 'host') {
502
+ score -= 10;
503
+ }
504
+ return Math.min(100, Math.max(0, score));
505
+ }
506
+ calculatePathScore(type) {
507
+ // Score based on path preference
508
+ switch (type) {
509
+ case 'host':
510
+ return 100; // Best - direct connection
511
+ case 'srflx':
512
+ return 80; // Good - through STUN
513
+ case 'prflx':
514
+ return 70; // OK - peer reflexive
515
+ case 'relay':
516
+ return 30; // Lower - through TURN
517
+ default:
518
+ return 0;
519
+ }
520
+ }
521
+ estimateRtt(candidate) {
522
+ // Estimate RTT based on candidate type
523
+ switch (candidate.type) {
524
+ case 'host':
525
+ return 5; // Local network
526
+ case 'srflx':
527
+ return 30; // Through NAT
528
+ case 'prflx':
529
+ return 40; // Peer reflexive
530
+ case 'relay':
531
+ return 100; // Through TURN
532
+ default:
533
+ return 200;
534
+ }
535
+ }
536
+ delay(ms) {
537
+ return new Promise((resolve) => setTimeout(resolve, ms));
538
+ }
539
+ emitEvent(type, data) {
540
+ const handlers = this.eventHandlers.get(type);
541
+ if (handlers) {
542
+ const event = {
543
+ type,
544
+ timestamp: Date.now(),
545
+ data,
546
+ };
547
+ handlers.forEach((handler) => {
548
+ try {
549
+ handler(event);
550
+ }
551
+ catch (error) {
552
+ console.error(`Connectivity tester event handler error for ${type}:`, error);
553
+ }
554
+ });
555
+ }
556
+ }
557
+ }
558
+ exports.ConnectivityTester = ConnectivityTester;
559
+ exports.default = ConnectivityTester;
560
+ //# sourceMappingURL=ConnectivityTester.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectivityTester.js","sourceRoot":"","sources":["../../../../src/edge/p2p/nat/ConnectivityTester.ts"],"names":[],"mappings":"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"}