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,171 @@
1
+ /**
2
+ * ICE Manager for WebRTC Connections
3
+ *
4
+ * Manages ICE (Interactive Connectivity Establishment) for WebRTC peer connections.
5
+ * Handles STUN/TURN server configuration, candidate gathering, trickling,
6
+ * connection quality monitoring, and NAT type detection.
7
+ *
8
+ * @module edge/p2p/webrtc/ICEManager
9
+ * @version 1.0.0
10
+ */
11
+ import { ICECandidate, ICEServer, ICEManagerConfig, ICEGatheringState, NATType, ConnectionQuality } from './types';
12
+ /**
13
+ * ICE candidate event handler type
14
+ */
15
+ export type ICECandidateHandler = (candidate: ICECandidate) => void;
16
+ /**
17
+ * ICE gathering state change handler type
18
+ */
19
+ export type ICEGatheringStateHandler = (state: RTCIceGatheringState) => void;
20
+ /**
21
+ * ICE connection state change handler type
22
+ */
23
+ export type ICEConnectionStateHandler = (state: RTCIceConnectionState) => void;
24
+ /**
25
+ * ICE Manager - Handles ICE candidate gathering and connection establishment
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * const iceManager = new ICEManager({
30
+ * iceServers: [
31
+ * { urls: 'stun:stun.l.google.com:19302' },
32
+ * { urls: 'turn:turn.example.com', username: 'user', credential: 'pass' }
33
+ * ],
34
+ * enableTrickle: true,
35
+ * });
36
+ *
37
+ * // Configure peer connection
38
+ * const rtcConfig = iceManager.getRTCConfiguration();
39
+ * const pc = new RTCPeerConnection(rtcConfig);
40
+ *
41
+ * // Set up ICE handling
42
+ * iceManager.attachToPeerConnection(pc);
43
+ * iceManager.onCandidate((candidate) => {
44
+ * // Send candidate to remote peer via signaling
45
+ * signaling.sendCandidate(remotePeerId, candidate);
46
+ * });
47
+ *
48
+ * // Add remote candidates
49
+ * await iceManager.addRemoteCandidate(remoteCandidate);
50
+ * ```
51
+ */
52
+ export declare class ICEManager {
53
+ private readonly config;
54
+ private peerConnection;
55
+ private gatheringState;
56
+ private candidateHandlers;
57
+ private gatheringStateHandlers;
58
+ private connectionStateHandlers;
59
+ private gatheringPromise;
60
+ private gatheringResolve;
61
+ private gatheringTimeout;
62
+ private detectedNATType;
63
+ private connectionQuality;
64
+ private qualityMonitorInterval;
65
+ /**
66
+ * Create a new ICE Manager instance
67
+ *
68
+ * @param config - ICE manager configuration
69
+ */
70
+ constructor(config?: Partial<ICEManagerConfig>);
71
+ /**
72
+ * Get RTCConfiguration for creating RTCPeerConnection
73
+ */
74
+ getRTCConfiguration(): RTCConfiguration;
75
+ /**
76
+ * Attach ICE manager to a peer connection
77
+ *
78
+ * @param pc - RTCPeerConnection to manage
79
+ */
80
+ attachToPeerConnection(pc: RTCPeerConnection): void;
81
+ /**
82
+ * Detach ICE manager from current peer connection
83
+ */
84
+ detachFromPeerConnection(): void;
85
+ /**
86
+ * Add a remote ICE candidate
87
+ *
88
+ * @param candidate - Remote ICE candidate to add
89
+ * @throws Error if no peer connection is attached
90
+ */
91
+ addRemoteCandidate(candidate: ICECandidate): Promise<void>;
92
+ /**
93
+ * Wait for ICE gathering to complete
94
+ *
95
+ * @param timeout - Maximum time to wait in ms (default: config.gatheringTimeout)
96
+ * @returns Promise that resolves when gathering is complete
97
+ */
98
+ waitForGatheringComplete(timeout?: number): Promise<void>;
99
+ /**
100
+ * Register callback for ICE candidate events
101
+ *
102
+ * @param handler - Callback function
103
+ * @returns Unsubscribe function
104
+ */
105
+ onCandidate(handler: ICECandidateHandler): () => void;
106
+ /**
107
+ * Register callback for ICE gathering state changes
108
+ *
109
+ * @param handler - Callback function
110
+ * @returns Unsubscribe function
111
+ */
112
+ onGatheringStateChange(handler: ICEGatheringStateHandler): () => void;
113
+ /**
114
+ * Register callback for ICE connection state changes
115
+ *
116
+ * @param handler - Callback function
117
+ * @returns Unsubscribe function
118
+ */
119
+ onConnectionStateChange(handler: ICEConnectionStateHandler): () => void;
120
+ /**
121
+ * Get current ICE gathering state
122
+ */
123
+ getGatheringState(): ICEGatheringState;
124
+ /**
125
+ * Get detected NAT type
126
+ */
127
+ getNATType(): NATType;
128
+ /**
129
+ * Get current connection quality metrics
130
+ */
131
+ getConnectionQuality(): ConnectionQuality;
132
+ /**
133
+ * Detect NAT type using STUN servers
134
+ * This is a simplified detection that classifies based on candidate types
135
+ */
136
+ detectNATType(): Promise<NATType>;
137
+ /**
138
+ * Update connection quality metrics from RTCPeerConnection stats
139
+ */
140
+ updateConnectionQuality(): Promise<ConnectionQuality>;
141
+ /**
142
+ * Check if TURN fallback is needed based on connection state
143
+ */
144
+ needsTurnFallback(): boolean;
145
+ /**
146
+ * Get ICE servers with TURN servers for fallback
147
+ */
148
+ getTurnFallbackServers(): ICEServer[];
149
+ /**
150
+ * Restart ICE gathering
151
+ */
152
+ restartIce(): Promise<void>;
153
+ /**
154
+ * Cleanup and release resources
155
+ */
156
+ destroy(): void;
157
+ private convertRTCIceCandidate;
158
+ private extractPriority;
159
+ private mapCandidateType;
160
+ private analyzeCandidate;
161
+ private onGatheringComplete;
162
+ private clearGatheringTimeout;
163
+ private resetGatheringState;
164
+ private emitCandidate;
165
+ private emitGatheringStateChange;
166
+ private emitConnectionStateChange;
167
+ private startQualityMonitoring;
168
+ private stopQualityMonitoring;
169
+ }
170
+ export default ICEManager;
171
+ //# sourceMappingURL=ICEManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICEManager.d.ts","sourceRoot":"","sources":["../../../../src/edge/p2p/webrtc/ICEManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EAChB,iBAAiB,EAEjB,OAAO,EACP,iBAAiB,EAKlB,MAAM,SAAS,CAAC;AAcjB;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,YAAY,KAAK,IAAI,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAC;AAE7E;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IACpD,OAAO,CAAC,cAAc,CAAkC;IACxD,OAAO,CAAC,cAAc,CAAoB;IAC1C,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,sBAAsB,CAA4C;IAC1E,OAAO,CAAC,uBAAuB,CAA6C;IAC5E,OAAO,CAAC,gBAAgB,CAA8B;IACtD,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,gBAAgB,CAA8C;IACtE,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,iBAAiB,CAAuD;IAChF,OAAO,CAAC,sBAAsB,CAA+C;IAE7E;;;;OAIG;gBACS,MAAM,GAAE,OAAO,CAAC,gBAAgB,CAAM;IAgBlD;;OAEG;IACI,mBAAmB,IAAI,gBAAgB;IAc9C;;;;OAIG;IACI,sBAAsB,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI;IA6C1D;;OAEG;IACI,wBAAwB,IAAI,IAAI;IAWvC;;;;;OAKG;IACU,kBAAkB,CAAC,SAAS,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBvE;;;;;OAKG;IACU,wBAAwB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBtE;;;;;OAKG;IACI,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,MAAM,IAAI;IAK5D;;;;;OAKG;IACI,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,IAAI;IAK5E;;;;;OAKG;IACI,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,GAAG,MAAM,IAAI;IAK9E;;OAEG;IACI,iBAAiB,IAAI,iBAAiB;IAI7C;;OAEG;IACI,UAAU,IAAI,OAAO;IAI5B;;OAEG;IACI,oBAAoB,IAAI,iBAAiB;IAIhD;;;OAGG;IACU,aAAa,IAAI,OAAO,CAAC,OAAO,CAAC;IA8B9C;;OAEG;IACU,uBAAuB,IAAI,OAAO,CAAC,iBAAiB,CAAC;IA6ClE;;OAEG;IACI,iBAAiB,IAAI,OAAO;IAgBnC;;OAEG;IACI,sBAAsB,IAAI,SAAS,EAAE;IAQ5C;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IASxC;;OAEG;IACI,OAAO,IAAI,IAAI;IAYtB,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,gBAAgB;IAexB,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,mBAAmB;IAkB3B,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,yBAAyB;IAUjC,OAAO,CAAC,sBAAsB;IAc9B,OAAO,CAAC,qBAAqB;CAM9B;AAED,eAAe,UAAU,CAAC"}
@@ -0,0 +1,490 @@
1
+ "use strict";
2
+ /**
3
+ * ICE Manager for WebRTC Connections
4
+ *
5
+ * Manages ICE (Interactive Connectivity Establishment) for WebRTC peer connections.
6
+ * Handles STUN/TURN server configuration, candidate gathering, trickling,
7
+ * connection quality monitoring, and NAT type detection.
8
+ *
9
+ * @module edge/p2p/webrtc/ICEManager
10
+ * @version 1.0.0
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.ICEManager = void 0;
14
+ const types_1 = require("./types");
15
+ /**
16
+ * Default ICE manager configuration
17
+ */
18
+ const DEFAULT_CONFIG = {
19
+ iceServers: types_1.DEFAULT_ICE_SERVERS,
20
+ iceTransportPolicy: 'all',
21
+ bundlePolicy: 'balanced',
22
+ enableTrickle: true,
23
+ gatheringTimeout: 10000,
24
+ enableTurnFallback: true,
25
+ };
26
+ /**
27
+ * ICE Manager - Handles ICE candidate gathering and connection establishment
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const iceManager = new ICEManager({
32
+ * iceServers: [
33
+ * { urls: 'stun:stun.l.google.com:19302' },
34
+ * { urls: 'turn:turn.example.com', username: 'user', credential: 'pass' }
35
+ * ],
36
+ * enableTrickle: true,
37
+ * });
38
+ *
39
+ * // Configure peer connection
40
+ * const rtcConfig = iceManager.getRTCConfiguration();
41
+ * const pc = new RTCPeerConnection(rtcConfig);
42
+ *
43
+ * // Set up ICE handling
44
+ * iceManager.attachToPeerConnection(pc);
45
+ * iceManager.onCandidate((candidate) => {
46
+ * // Send candidate to remote peer via signaling
47
+ * signaling.sendCandidate(remotePeerId, candidate);
48
+ * });
49
+ *
50
+ * // Add remote candidates
51
+ * await iceManager.addRemoteCandidate(remoteCandidate);
52
+ * ```
53
+ */
54
+ class ICEManager {
55
+ /**
56
+ * Create a new ICE Manager instance
57
+ *
58
+ * @param config - ICE manager configuration
59
+ */
60
+ constructor(config = {}) {
61
+ this.peerConnection = null;
62
+ this.candidateHandlers = new Set();
63
+ this.gatheringStateHandlers = new Set();
64
+ this.connectionStateHandlers = new Set();
65
+ this.gatheringPromise = null;
66
+ this.gatheringResolve = null;
67
+ this.gatheringTimeout = null;
68
+ this.detectedNATType = types_1.NATType.UNKNOWN;
69
+ this.connectionQuality = (0, types_1.createDefaultConnectionQuality)();
70
+ this.qualityMonitorInterval = null;
71
+ this.config = {
72
+ ...DEFAULT_CONFIG,
73
+ ...config,
74
+ iceServers: config.iceServers ?? DEFAULT_CONFIG.iceServers,
75
+ };
76
+ this.gatheringState = {
77
+ state: 'new',
78
+ localCandidates: [],
79
+ remoteCandidates: [],
80
+ natType: types_1.NATType.UNKNOWN,
81
+ isComplete: false,
82
+ };
83
+ }
84
+ /**
85
+ * Get RTCConfiguration for creating RTCPeerConnection
86
+ */
87
+ getRTCConfiguration() {
88
+ return {
89
+ iceServers: this.config.iceServers.map((server) => ({
90
+ urls: server.urls,
91
+ username: server.username,
92
+ credential: server.credential,
93
+ credentialType: server.credentialType,
94
+ })),
95
+ iceTransportPolicy: this.config.iceTransportPolicy,
96
+ bundlePolicy: this.config.bundlePolicy,
97
+ iceCandidatePoolSize: 0,
98
+ };
99
+ }
100
+ /**
101
+ * Attach ICE manager to a peer connection
102
+ *
103
+ * @param pc - RTCPeerConnection to manage
104
+ */
105
+ attachToPeerConnection(pc) {
106
+ if (this.peerConnection) {
107
+ this.detachFromPeerConnection();
108
+ }
109
+ this.peerConnection = pc;
110
+ this.resetGatheringState();
111
+ // Handle ICE candidate events
112
+ pc.onicecandidate = (event) => {
113
+ if (event.candidate) {
114
+ const candidate = this.convertRTCIceCandidate(event.candidate);
115
+ this.gatheringState.localCandidates.push(candidate);
116
+ this.emitCandidate(candidate);
117
+ this.analyzeCandidate(candidate);
118
+ }
119
+ else {
120
+ // Null candidate signals gathering complete
121
+ this.onGatheringComplete();
122
+ }
123
+ };
124
+ // Handle ICE gathering state changes
125
+ pc.onicegatheringstatechange = () => {
126
+ const state = pc.iceGatheringState;
127
+ this.gatheringState.state = state;
128
+ this.emitGatheringStateChange(state);
129
+ if (state === 'complete') {
130
+ this.onGatheringComplete();
131
+ }
132
+ };
133
+ // Handle ICE connection state changes
134
+ pc.oniceconnectionstatechange = () => {
135
+ const state = pc.iceConnectionState;
136
+ this.emitConnectionStateChange(state);
137
+ if (state === 'connected' || state === 'completed') {
138
+ this.startQualityMonitoring();
139
+ }
140
+ else if (state === 'disconnected' || state === 'failed' || state === 'closed') {
141
+ this.stopQualityMonitoring();
142
+ }
143
+ };
144
+ }
145
+ /**
146
+ * Detach ICE manager from current peer connection
147
+ */
148
+ detachFromPeerConnection() {
149
+ if (this.peerConnection) {
150
+ this.peerConnection.onicecandidate = null;
151
+ this.peerConnection.onicegatheringstatechange = null;
152
+ this.peerConnection.oniceconnectionstatechange = null;
153
+ this.peerConnection = null;
154
+ }
155
+ this.stopQualityMonitoring();
156
+ this.resetGatheringState();
157
+ }
158
+ /**
159
+ * Add a remote ICE candidate
160
+ *
161
+ * @param candidate - Remote ICE candidate to add
162
+ * @throws Error if no peer connection is attached
163
+ */
164
+ async addRemoteCandidate(candidate) {
165
+ if (!this.peerConnection) {
166
+ throw new Error('No peer connection attached to ICE manager');
167
+ }
168
+ const rtcCandidate = new RTCIceCandidate({
169
+ candidate: candidate.candidate,
170
+ sdpMLineIndex: candidate.sdpMLineIndex ?? undefined,
171
+ sdpMid: candidate.sdpMid ?? undefined,
172
+ usernameFragment: candidate.usernameFragment ?? undefined,
173
+ });
174
+ await this.peerConnection.addIceCandidate(rtcCandidate);
175
+ this.gatheringState.remoteCandidates.push(candidate);
176
+ }
177
+ /**
178
+ * Wait for ICE gathering to complete
179
+ *
180
+ * @param timeout - Maximum time to wait in ms (default: config.gatheringTimeout)
181
+ * @returns Promise that resolves when gathering is complete
182
+ */
183
+ async waitForGatheringComplete(timeout) {
184
+ if (this.gatheringState.isComplete) {
185
+ return;
186
+ }
187
+ if (this.gatheringPromise) {
188
+ return this.gatheringPromise;
189
+ }
190
+ const timeoutMs = timeout ?? this.config.gatheringTimeout;
191
+ this.gatheringPromise = new Promise((resolve, reject) => {
192
+ this.gatheringResolve = resolve;
193
+ this.gatheringTimeout = setTimeout(() => {
194
+ // Gathering timeout - proceed with what we have
195
+ this.onGatheringComplete();
196
+ resolve();
197
+ }, timeoutMs);
198
+ });
199
+ return this.gatheringPromise;
200
+ }
201
+ /**
202
+ * Register callback for ICE candidate events
203
+ *
204
+ * @param handler - Callback function
205
+ * @returns Unsubscribe function
206
+ */
207
+ onCandidate(handler) {
208
+ this.candidateHandlers.add(handler);
209
+ return () => this.candidateHandlers.delete(handler);
210
+ }
211
+ /**
212
+ * Register callback for ICE gathering state changes
213
+ *
214
+ * @param handler - Callback function
215
+ * @returns Unsubscribe function
216
+ */
217
+ onGatheringStateChange(handler) {
218
+ this.gatheringStateHandlers.add(handler);
219
+ return () => this.gatheringStateHandlers.delete(handler);
220
+ }
221
+ /**
222
+ * Register callback for ICE connection state changes
223
+ *
224
+ * @param handler - Callback function
225
+ * @returns Unsubscribe function
226
+ */
227
+ onConnectionStateChange(handler) {
228
+ this.connectionStateHandlers.add(handler);
229
+ return () => this.connectionStateHandlers.delete(handler);
230
+ }
231
+ /**
232
+ * Get current ICE gathering state
233
+ */
234
+ getGatheringState() {
235
+ return { ...this.gatheringState };
236
+ }
237
+ /**
238
+ * Get detected NAT type
239
+ */
240
+ getNATType() {
241
+ return this.detectedNATType;
242
+ }
243
+ /**
244
+ * Get current connection quality metrics
245
+ */
246
+ getConnectionQuality() {
247
+ return { ...this.connectionQuality };
248
+ }
249
+ /**
250
+ * Detect NAT type using STUN servers
251
+ * This is a simplified detection that classifies based on candidate types
252
+ */
253
+ async detectNATType() {
254
+ const candidates = this.gatheringState.localCandidates;
255
+ if (candidates.length === 0) {
256
+ return types_1.NATType.UNKNOWN;
257
+ }
258
+ const hasHost = candidates.some((c) => c.type === 'host');
259
+ const hasSrflx = candidates.some((c) => c.type === 'srflx');
260
+ const hasRelay = candidates.some((c) => c.type === 'relay');
261
+ // Analyze candidate types to infer NAT type
262
+ if (hasHost && !hasSrflx && !hasRelay) {
263
+ // Only host candidates - likely no NAT
264
+ this.detectedNATType = types_1.NATType.NONE;
265
+ }
266
+ else if (hasSrflx) {
267
+ // Server reflexive candidates found - some form of cone NAT
268
+ // More detailed detection would require multiple STUN servers
269
+ this.detectedNATType = types_1.NATType.FULL_CONE;
270
+ }
271
+ else if (hasRelay && !hasSrflx) {
272
+ // Only relay candidates - likely symmetric NAT
273
+ this.detectedNATType = types_1.NATType.SYMMETRIC;
274
+ }
275
+ else {
276
+ this.detectedNATType = types_1.NATType.UNKNOWN;
277
+ }
278
+ this.gatheringState.natType = this.detectedNATType;
279
+ return this.detectedNATType;
280
+ }
281
+ /**
282
+ * Update connection quality metrics from RTCPeerConnection stats
283
+ */
284
+ async updateConnectionQuality() {
285
+ if (!this.peerConnection) {
286
+ return this.connectionQuality;
287
+ }
288
+ try {
289
+ const stats = await this.peerConnection.getStats();
290
+ let candidatePairFound = false;
291
+ stats.forEach((report) => {
292
+ if (report.type === 'candidate-pair' && report.state === 'succeeded') {
293
+ candidatePairFound = true;
294
+ this.connectionQuality.rttMs = report.currentRoundTripTime
295
+ ? report.currentRoundTripTime * 1000
296
+ : this.connectionQuality.rttMs;
297
+ this.connectionQuality.availableBandwidth =
298
+ report.availableOutgoingBitrate ?? this.connectionQuality.availableBandwidth;
299
+ }
300
+ if (report.type === 'local-candidate') {
301
+ this.connectionQuality.localCandidateType = this.mapCandidateType(report.candidateType);
302
+ }
303
+ if (report.type === 'remote-candidate') {
304
+ this.connectionQuality.remoteCandidateType = this.mapCandidateType(report.candidateType);
305
+ }
306
+ if (report.type === 'transport') {
307
+ const packetsLost = report.packetsLost ?? 0;
308
+ const packetsReceived = report.packetsReceived ?? 0;
309
+ const totalPackets = packetsLost + packetsReceived;
310
+ this.connectionQuality.packetLossPercent =
311
+ totalPackets > 0 ? (packetsLost / totalPackets) * 100 : 0;
312
+ }
313
+ });
314
+ this.connectionQuality.measuredAt = Date.now();
315
+ }
316
+ catch (error) {
317
+ // Stats collection failed - keep existing quality
318
+ console.warn('Failed to collect connection quality stats:', error);
319
+ }
320
+ return { ...this.connectionQuality };
321
+ }
322
+ /**
323
+ * Check if TURN fallback is needed based on connection state
324
+ */
325
+ needsTurnFallback() {
326
+ if (!this.config.enableTurnFallback) {
327
+ return false;
328
+ }
329
+ // Check if we only have relay candidates or connection is failing
330
+ const hasOnlyRelay = this.gatheringState.localCandidates.length > 0 &&
331
+ this.gatheringState.localCandidates.every((c) => c.type === 'relay');
332
+ const connectionState = this.peerConnection?.iceConnectionState;
333
+ const isFailing = connectionState === 'failed' || connectionState === 'disconnected';
334
+ return hasOnlyRelay || isFailing;
335
+ }
336
+ /**
337
+ * Get ICE servers with TURN servers for fallback
338
+ */
339
+ getTurnFallbackServers() {
340
+ return this.config.iceServers.filter((server) => (Array.isArray(server.urls) && server.urls.some((url) => url.startsWith('turn:'))) ||
341
+ (typeof server.urls === 'string' && server.urls.startsWith('turn:')));
342
+ }
343
+ /**
344
+ * Restart ICE gathering
345
+ */
346
+ async restartIce() {
347
+ if (!this.peerConnection) {
348
+ throw new Error('No peer connection attached');
349
+ }
350
+ this.resetGatheringState();
351
+ this.peerConnection.restartIce();
352
+ }
353
+ /**
354
+ * Cleanup and release resources
355
+ */
356
+ destroy() {
357
+ this.detachFromPeerConnection();
358
+ this.candidateHandlers.clear();
359
+ this.gatheringStateHandlers.clear();
360
+ this.connectionStateHandlers.clear();
361
+ this.clearGatheringTimeout();
362
+ }
363
+ // ============================================
364
+ // Private Methods
365
+ // ============================================
366
+ convertRTCIceCandidate(rtcCandidate) {
367
+ return {
368
+ candidate: rtcCandidate.candidate,
369
+ sdpMLineIndex: rtcCandidate.sdpMLineIndex,
370
+ sdpMid: rtcCandidate.sdpMid,
371
+ usernameFragment: rtcCandidate.usernameFragment,
372
+ type: (0, types_1.parseICECandidateType)(rtcCandidate.candidate),
373
+ priority: this.extractPriority(rtcCandidate.candidate),
374
+ address: rtcCandidate.address ?? undefined,
375
+ port: rtcCandidate.port ?? undefined,
376
+ protocol: rtcCandidate.protocol,
377
+ };
378
+ }
379
+ extractPriority(candidateString) {
380
+ const match = candidateString.match(/priority\s+(\d+)/);
381
+ return match ? parseInt(match[1], 10) : 0;
382
+ }
383
+ mapCandidateType(type) {
384
+ switch (type) {
385
+ case 'host':
386
+ return 'host';
387
+ case 'srflx':
388
+ return 'srflx';
389
+ case 'prflx':
390
+ return 'prflx';
391
+ case 'relay':
392
+ return 'relay';
393
+ default:
394
+ return 'unknown';
395
+ }
396
+ }
397
+ analyzeCandidate(candidate) {
398
+ // Update NAT type analysis based on new candidate
399
+ if (candidate.type === 'srflx' || candidate.type === 'relay') {
400
+ // We're behind some form of NAT
401
+ if (this.detectedNATType === types_1.NATType.UNKNOWN) {
402
+ this.detectedNATType = candidate.type === 'relay' ? types_1.NATType.SYMMETRIC : types_1.NATType.FULL_CONE;
403
+ }
404
+ }
405
+ }
406
+ onGatheringComplete() {
407
+ if (this.gatheringState.isComplete) {
408
+ return;
409
+ }
410
+ this.gatheringState.isComplete = true;
411
+ this.clearGatheringTimeout();
412
+ // Detect NAT type based on gathered candidates
413
+ this.detectNATType();
414
+ if (this.gatheringResolve) {
415
+ this.gatheringResolve();
416
+ this.gatheringResolve = null;
417
+ this.gatheringPromise = null;
418
+ }
419
+ }
420
+ clearGatheringTimeout() {
421
+ if (this.gatheringTimeout) {
422
+ clearTimeout(this.gatheringTimeout);
423
+ this.gatheringTimeout = null;
424
+ }
425
+ }
426
+ resetGatheringState() {
427
+ this.clearGatheringTimeout();
428
+ this.gatheringState = {
429
+ state: 'new',
430
+ localCandidates: [],
431
+ remoteCandidates: [],
432
+ natType: types_1.NATType.UNKNOWN,
433
+ isComplete: false,
434
+ };
435
+ this.gatheringPromise = null;
436
+ this.gatheringResolve = null;
437
+ }
438
+ emitCandidate(candidate) {
439
+ if (this.config.enableTrickle) {
440
+ this.candidateHandlers.forEach((handler) => {
441
+ try {
442
+ handler(candidate);
443
+ }
444
+ catch (error) {
445
+ console.error('ICE candidate handler error:', error);
446
+ }
447
+ });
448
+ }
449
+ }
450
+ emitGatheringStateChange(state) {
451
+ this.gatheringStateHandlers.forEach((handler) => {
452
+ try {
453
+ handler(state);
454
+ }
455
+ catch (error) {
456
+ console.error('ICE gathering state handler error:', error);
457
+ }
458
+ });
459
+ }
460
+ emitConnectionStateChange(state) {
461
+ this.connectionStateHandlers.forEach((handler) => {
462
+ try {
463
+ handler(state);
464
+ }
465
+ catch (error) {
466
+ console.error('ICE connection state handler error:', error);
467
+ }
468
+ });
469
+ }
470
+ startQualityMonitoring() {
471
+ if (this.qualityMonitorInterval) {
472
+ return;
473
+ }
474
+ // Update quality metrics every 5 seconds
475
+ this.qualityMonitorInterval = setInterval(() => {
476
+ this.updateConnectionQuality();
477
+ }, 5000);
478
+ // Initial quality check
479
+ this.updateConnectionQuality();
480
+ }
481
+ stopQualityMonitoring() {
482
+ if (this.qualityMonitorInterval) {
483
+ clearInterval(this.qualityMonitorInterval);
484
+ this.qualityMonitorInterval = null;
485
+ }
486
+ }
487
+ }
488
+ exports.ICEManager = ICEManager;
489
+ exports.default = ICEManager;
490
+ //# sourceMappingURL=ICEManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ICEManager.js","sourceRoot":"","sources":["../../../../src/edge/p2p/webrtc/ICEManager.ts"],"names":[],"mappings":"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"}