agentic-qe 2.7.4 → 2.8.1

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 (647) hide show
  1. package/CHANGELOG.md +209 -0
  2. package/README.md +67 -2
  3. package/dist/agents/BaseAgent.d.ts +128 -0
  4. package/dist/agents/BaseAgent.d.ts.map +1 -1
  5. package/dist/agents/BaseAgent.js +256 -0
  6. package/dist/agents/BaseAgent.js.map +1 -1
  7. package/dist/cli/commands/agent/spawn.d.ts +12 -1
  8. package/dist/cli/commands/agent/spawn.d.ts.map +1 -1
  9. package/dist/cli/commands/agent/spawn.js +95 -8
  10. package/dist/cli/commands/agent/spawn.js.map +1 -1
  11. package/dist/cli/commands/supabase/index.d.ts +20 -0
  12. package/dist/cli/commands/supabase/index.d.ts.map +1 -0
  13. package/dist/cli/commands/supabase/index.js +632 -0
  14. package/dist/cli/commands/supabase/index.js.map +1 -0
  15. package/dist/cli/index.js +94 -0
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/core/memory/HNSWVectorMemory.js +1 -1
  18. package/dist/edge/adapters/BrowserHNSWAdapter.d.ts +134 -0
  19. package/dist/edge/adapters/BrowserHNSWAdapter.d.ts.map +1 -0
  20. package/dist/edge/adapters/BrowserHNSWAdapter.js +484 -0
  21. package/dist/edge/adapters/BrowserHNSWAdapter.js.map +1 -0
  22. package/dist/edge/adapters/IndexedDBStorage.d.ts +114 -0
  23. package/dist/edge/adapters/IndexedDBStorage.d.ts.map +1 -0
  24. package/dist/edge/adapters/IndexedDBStorage.js +478 -0
  25. package/dist/edge/adapters/IndexedDBStorage.js.map +1 -0
  26. package/dist/edge/adapters/index.d.ts +12 -0
  27. package/dist/edge/adapters/index.d.ts.map +1 -0
  28. package/dist/edge/adapters/index.js +22 -0
  29. package/dist/edge/adapters/index.js.map +1 -0
  30. package/dist/edge/browser/BrowserAgent.d.ts +241 -0
  31. package/dist/edge/browser/BrowserAgent.d.ts.map +1 -0
  32. package/dist/edge/browser/BrowserAgent.js +743 -0
  33. package/dist/edge/browser/BrowserAgent.js.map +1 -0
  34. package/dist/edge/index.d.ts +34 -0
  35. package/dist/edge/index.d.ts.map +1 -0
  36. package/dist/edge/index.js +114 -0
  37. package/dist/edge/index.js.map +1 -0
  38. package/dist/edge/p2p/coordination/CoordinationManager.d.ts +181 -0
  39. package/dist/edge/p2p/coordination/CoordinationManager.d.ts.map +1 -0
  40. package/dist/edge/p2p/coordination/CoordinationManager.js +851 -0
  41. package/dist/edge/p2p/coordination/CoordinationManager.js.map +1 -0
  42. package/dist/edge/p2p/coordination/HealthMonitor.d.ts +143 -0
  43. package/dist/edge/p2p/coordination/HealthMonitor.d.ts.map +1 -0
  44. package/dist/edge/p2p/coordination/HealthMonitor.js +432 -0
  45. package/dist/edge/p2p/coordination/HealthMonitor.js.map +1 -0
  46. package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts +146 -0
  47. package/dist/edge/p2p/coordination/SyncOrchestrator.d.ts.map +1 -0
  48. package/dist/edge/p2p/coordination/SyncOrchestrator.js +783 -0
  49. package/dist/edge/p2p/coordination/SyncOrchestrator.js.map +1 -0
  50. package/dist/edge/p2p/coordination/index.d.ts +70 -0
  51. package/dist/edge/p2p/coordination/index.d.ts.map +1 -0
  52. package/dist/edge/p2p/coordination/index.js +107 -0
  53. package/dist/edge/p2p/coordination/index.js.map +1 -0
  54. package/dist/edge/p2p/coordination/types.d.ts +572 -0
  55. package/dist/edge/p2p/coordination/types.d.ts.map +1 -0
  56. package/dist/edge/p2p/coordination/types.js +366 -0
  57. package/dist/edge/p2p/coordination/types.js.map +1 -0
  58. package/dist/edge/p2p/crdt/CRDTStore.d.ts +324 -0
  59. package/dist/edge/p2p/crdt/CRDTStore.d.ts.map +1 -0
  60. package/dist/edge/p2p/crdt/CRDTStore.js +839 -0
  61. package/dist/edge/p2p/crdt/CRDTStore.js.map +1 -0
  62. package/dist/edge/p2p/crdt/GCounter.d.ts +173 -0
  63. package/dist/edge/p2p/crdt/GCounter.d.ts.map +1 -0
  64. package/dist/edge/p2p/crdt/GCounter.js +394 -0
  65. package/dist/edge/p2p/crdt/GCounter.js.map +1 -0
  66. package/dist/edge/p2p/crdt/LWWRegister.d.ts +200 -0
  67. package/dist/edge/p2p/crdt/LWWRegister.d.ts.map +1 -0
  68. package/dist/edge/p2p/crdt/LWWRegister.js +456 -0
  69. package/dist/edge/p2p/crdt/LWWRegister.js.map +1 -0
  70. package/dist/edge/p2p/crdt/ORSet.d.ts +232 -0
  71. package/dist/edge/p2p/crdt/ORSet.d.ts.map +1 -0
  72. package/dist/edge/p2p/crdt/ORSet.js +723 -0
  73. package/dist/edge/p2p/crdt/ORSet.js.map +1 -0
  74. package/dist/edge/p2p/crdt/PatternCRDT.d.ts +366 -0
  75. package/dist/edge/p2p/crdt/PatternCRDT.d.ts.map +1 -0
  76. package/dist/edge/p2p/crdt/PatternCRDT.js +838 -0
  77. package/dist/edge/p2p/crdt/PatternCRDT.js.map +1 -0
  78. package/dist/edge/p2p/crdt/VectorClock.d.ts +274 -0
  79. package/dist/edge/p2p/crdt/VectorClock.d.ts.map +1 -0
  80. package/dist/edge/p2p/crdt/VectorClock.js +499 -0
  81. package/dist/edge/p2p/crdt/VectorClock.js.map +1 -0
  82. package/dist/edge/p2p/crdt/index.d.ts +87 -0
  83. package/dist/edge/p2p/crdt/index.d.ts.map +1 -0
  84. package/dist/edge/p2p/crdt/index.js +120 -0
  85. package/dist/edge/p2p/crdt/index.js.map +1 -0
  86. package/dist/edge/p2p/crdt/types.d.ts +667 -0
  87. package/dist/edge/p2p/crdt/types.d.ts.map +1 -0
  88. package/dist/edge/p2p/crdt/types.js +208 -0
  89. package/dist/edge/p2p/crdt/types.js.map +1 -0
  90. package/dist/edge/p2p/crypto/Identity.d.ts +139 -0
  91. package/dist/edge/p2p/crypto/Identity.d.ts.map +1 -0
  92. package/dist/edge/p2p/crypto/Identity.js +449 -0
  93. package/dist/edge/p2p/crypto/Identity.js.map +1 -0
  94. package/dist/edge/p2p/crypto/KeyManager.d.ts +196 -0
  95. package/dist/edge/p2p/crypto/KeyManager.d.ts.map +1 -0
  96. package/dist/edge/p2p/crypto/KeyManager.js +576 -0
  97. package/dist/edge/p2p/crypto/KeyManager.js.map +1 -0
  98. package/dist/edge/p2p/crypto/Signer.d.ts +164 -0
  99. package/dist/edge/p2p/crypto/Signer.d.ts.map +1 -0
  100. package/dist/edge/p2p/crypto/Signer.js +357 -0
  101. package/dist/edge/p2p/crypto/Signer.js.map +1 -0
  102. package/dist/edge/p2p/crypto/index.d.ts +90 -0
  103. package/dist/edge/p2p/crypto/index.d.ts.map +1 -0
  104. package/dist/edge/p2p/crypto/index.js +158 -0
  105. package/dist/edge/p2p/crypto/index.js.map +1 -0
  106. package/dist/edge/p2p/crypto/types.d.ts +217 -0
  107. package/dist/edge/p2p/crypto/types.d.ts.map +1 -0
  108. package/dist/edge/p2p/crypto/types.js +42 -0
  109. package/dist/edge/p2p/crypto/types.js.map +1 -0
  110. package/dist/edge/p2p/federated/FederatedCoordinator.d.ts +270 -0
  111. package/dist/edge/p2p/federated/FederatedCoordinator.d.ts.map +1 -0
  112. package/dist/edge/p2p/federated/FederatedCoordinator.js +824 -0
  113. package/dist/edge/p2p/federated/FederatedCoordinator.js.map +1 -0
  114. package/dist/edge/p2p/federated/FederatedRound.d.ts +295 -0
  115. package/dist/edge/p2p/federated/FederatedRound.d.ts.map +1 -0
  116. package/dist/edge/p2p/federated/FederatedRound.js +819 -0
  117. package/dist/edge/p2p/federated/FederatedRound.js.map +1 -0
  118. package/dist/edge/p2p/federated/GradientAggregator.d.ts +226 -0
  119. package/dist/edge/p2p/federated/GradientAggregator.d.ts.map +1 -0
  120. package/dist/edge/p2p/federated/GradientAggregator.js +826 -0
  121. package/dist/edge/p2p/federated/GradientAggregator.js.map +1 -0
  122. package/dist/edge/p2p/federated/ModelManager.d.ts +248 -0
  123. package/dist/edge/p2p/federated/ModelManager.d.ts.map +1 -0
  124. package/dist/edge/p2p/federated/ModelManager.js +724 -0
  125. package/dist/edge/p2p/federated/ModelManager.js.map +1 -0
  126. package/dist/edge/p2p/federated/index.d.ts +65 -0
  127. package/dist/edge/p2p/federated/index.d.ts.map +1 -0
  128. package/dist/edge/p2p/federated/index.js +110 -0
  129. package/dist/edge/p2p/federated/index.js.map +1 -0
  130. package/dist/edge/p2p/federated/types.d.ts +905 -0
  131. package/dist/edge/p2p/federated/types.d.ts.map +1 -0
  132. package/dist/edge/p2p/federated/types.js +339 -0
  133. package/dist/edge/p2p/federated/types.js.map +1 -0
  134. package/dist/edge/p2p/index.d.ts +156 -0
  135. package/dist/edge/p2p/index.d.ts.map +1 -0
  136. package/dist/edge/p2p/index.js +242 -0
  137. package/dist/edge/p2p/index.js.map +1 -0
  138. package/dist/edge/p2p/nat/ConnectivityTester.d.ts +128 -0
  139. package/dist/edge/p2p/nat/ConnectivityTester.d.ts.map +1 -0
  140. package/dist/edge/p2p/nat/ConnectivityTester.js +560 -0
  141. package/dist/edge/p2p/nat/ConnectivityTester.js.map +1 -0
  142. package/dist/edge/p2p/nat/HolePuncher.d.ts +159 -0
  143. package/dist/edge/p2p/nat/HolePuncher.d.ts.map +1 -0
  144. package/dist/edge/p2p/nat/HolePuncher.js +569 -0
  145. package/dist/edge/p2p/nat/HolePuncher.js.map +1 -0
  146. package/dist/edge/p2p/nat/NATDetector.d.ts +109 -0
  147. package/dist/edge/p2p/nat/NATDetector.d.ts.map +1 -0
  148. package/dist/edge/p2p/nat/NATDetector.js +472 -0
  149. package/dist/edge/p2p/nat/NATDetector.js.map +1 -0
  150. package/dist/edge/p2p/nat/TURNManager.d.ts +158 -0
  151. package/dist/edge/p2p/nat/TURNManager.d.ts.map +1 -0
  152. package/dist/edge/p2p/nat/TURNManager.js +547 -0
  153. package/dist/edge/p2p/nat/TURNManager.js.map +1 -0
  154. package/dist/edge/p2p/nat/index.d.ts +74 -0
  155. package/dist/edge/p2p/nat/index.d.ts.map +1 -0
  156. package/dist/edge/p2p/nat/index.js +104 -0
  157. package/dist/edge/p2p/nat/index.js.map +1 -0
  158. package/dist/edge/p2p/nat/types.d.ts +583 -0
  159. package/dist/edge/p2p/nat/types.d.ts.map +1 -0
  160. package/dist/edge/p2p/nat/types.js +267 -0
  161. package/dist/edge/p2p/nat/types.js.map +1 -0
  162. package/dist/edge/p2p/protocol/AgentChannel.d.ts +333 -0
  163. package/dist/edge/p2p/protocol/AgentChannel.d.ts.map +1 -0
  164. package/dist/edge/p2p/protocol/AgentChannel.js +914 -0
  165. package/dist/edge/p2p/protocol/AgentChannel.js.map +1 -0
  166. package/dist/edge/p2p/protocol/MessageEncoder.d.ts +147 -0
  167. package/dist/edge/p2p/protocol/MessageEncoder.d.ts.map +1 -0
  168. package/dist/edge/p2p/protocol/MessageEncoder.js +738 -0
  169. package/dist/edge/p2p/protocol/MessageEncoder.js.map +1 -0
  170. package/dist/edge/p2p/protocol/MessageRouter.d.ts +266 -0
  171. package/dist/edge/p2p/protocol/MessageRouter.d.ts.map +1 -0
  172. package/dist/edge/p2p/protocol/MessageRouter.js +808 -0
  173. package/dist/edge/p2p/protocol/MessageRouter.js.map +1 -0
  174. package/dist/edge/p2p/protocol/ProtocolHandler.d.ts +309 -0
  175. package/dist/edge/p2p/protocol/ProtocolHandler.d.ts.map +1 -0
  176. package/dist/edge/p2p/protocol/ProtocolHandler.js +930 -0
  177. package/dist/edge/p2p/protocol/ProtocolHandler.js.map +1 -0
  178. package/dist/edge/p2p/protocol/index.d.ts +114 -0
  179. package/dist/edge/p2p/protocol/index.d.ts.map +1 -0
  180. package/dist/edge/p2p/protocol/index.js +206 -0
  181. package/dist/edge/p2p/protocol/index.js.map +1 -0
  182. package/dist/edge/p2p/protocol/types.d.ts +737 -0
  183. package/dist/edge/p2p/protocol/types.d.ts.map +1 -0
  184. package/dist/edge/p2p/protocol/types.js +490 -0
  185. package/dist/edge/p2p/protocol/types.js.map +1 -0
  186. package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts +284 -0
  187. package/dist/edge/p2p/sharing/PatternBroadcaster.d.ts.map +1 -0
  188. package/dist/edge/p2p/sharing/PatternBroadcaster.js +644 -0
  189. package/dist/edge/p2p/sharing/PatternBroadcaster.js.map +1 -0
  190. package/dist/edge/p2p/sharing/PatternIndex.d.ts +168 -0
  191. package/dist/edge/p2p/sharing/PatternIndex.d.ts.map +1 -0
  192. package/dist/edge/p2p/sharing/PatternIndex.js +781 -0
  193. package/dist/edge/p2p/sharing/PatternIndex.js.map +1 -0
  194. package/dist/edge/p2p/sharing/PatternSerializer.d.ts +163 -0
  195. package/dist/edge/p2p/sharing/PatternSerializer.d.ts.map +1 -0
  196. package/dist/edge/p2p/sharing/PatternSerializer.js +696 -0
  197. package/dist/edge/p2p/sharing/PatternSerializer.js.map +1 -0
  198. package/dist/edge/p2p/sharing/PatternSyncManager.d.ts +242 -0
  199. package/dist/edge/p2p/sharing/PatternSyncManager.d.ts.map +1 -0
  200. package/dist/edge/p2p/sharing/PatternSyncManager.js +859 -0
  201. package/dist/edge/p2p/sharing/PatternSyncManager.js.map +1 -0
  202. package/dist/edge/p2p/sharing/index.d.ts +90 -0
  203. package/dist/edge/p2p/sharing/index.d.ts.map +1 -0
  204. package/dist/edge/p2p/sharing/index.js +152 -0
  205. package/dist/edge/p2p/sharing/index.js.map +1 -0
  206. package/dist/edge/p2p/sharing/types.d.ts +796 -0
  207. package/dist/edge/p2p/sharing/types.d.ts.map +1 -0
  208. package/dist/edge/p2p/sharing/types.js +264 -0
  209. package/dist/edge/p2p/sharing/types.js.map +1 -0
  210. package/dist/edge/p2p/webrtc/ConnectionPool.d.ts +218 -0
  211. package/dist/edge/p2p/webrtc/ConnectionPool.d.ts.map +1 -0
  212. package/dist/edge/p2p/webrtc/ConnectionPool.js +562 -0
  213. package/dist/edge/p2p/webrtc/ConnectionPool.js.map +1 -0
  214. package/dist/edge/p2p/webrtc/ICEManager.d.ts +171 -0
  215. package/dist/edge/p2p/webrtc/ICEManager.d.ts.map +1 -0
  216. package/dist/edge/p2p/webrtc/ICEManager.js +490 -0
  217. package/dist/edge/p2p/webrtc/ICEManager.js.map +1 -0
  218. package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts +159 -0
  219. package/dist/edge/p2p/webrtc/PeerConnectionManager.d.ts.map +1 -0
  220. package/dist/edge/p2p/webrtc/PeerConnectionManager.js +735 -0
  221. package/dist/edge/p2p/webrtc/PeerConnectionManager.js.map +1 -0
  222. package/dist/edge/p2p/webrtc/SignalingClient.d.ts +191 -0
  223. package/dist/edge/p2p/webrtc/SignalingClient.d.ts.map +1 -0
  224. package/dist/edge/p2p/webrtc/SignalingClient.js +608 -0
  225. package/dist/edge/p2p/webrtc/SignalingClient.js.map +1 -0
  226. package/dist/edge/p2p/webrtc/index.d.ts +158 -0
  227. package/dist/edge/p2p/webrtc/index.d.ts.map +1 -0
  228. package/dist/edge/p2p/webrtc/index.js +164 -0
  229. package/dist/edge/p2p/webrtc/index.js.map +1 -0
  230. package/dist/edge/p2p/webrtc/types.d.ts +665 -0
  231. package/dist/edge/p2p/webrtc/types.d.ts.map +1 -0
  232. package/dist/edge/p2p/webrtc/types.js +245 -0
  233. package/dist/edge/p2p/webrtc/types.js.map +1 -0
  234. package/dist/edge/server/AgentSpawnAPI.d.ts +98 -0
  235. package/dist/edge/server/AgentSpawnAPI.d.ts.map +1 -0
  236. package/dist/edge/server/AgentSpawnAPI.js +264 -0
  237. package/dist/edge/server/AgentSpawnAPI.js.map +1 -0
  238. package/dist/edge/server/SignalingServer.d.ts +71 -0
  239. package/dist/edge/server/SignalingServer.d.ts.map +1 -0
  240. package/dist/edge/server/SignalingServer.js +429 -0
  241. package/dist/edge/server/SignalingServer.js.map +1 -0
  242. package/dist/edge/server/index.d.ts +64 -0
  243. package/dist/edge/server/index.d.ts.map +1 -0
  244. package/dist/edge/server/index.js +318 -0
  245. package/dist/edge/server/index.js.map +1 -0
  246. package/dist/edge/types/browser-agent.types.d.ts +455 -0
  247. package/dist/edge/types/browser-agent.types.d.ts.map +1 -0
  248. package/dist/edge/types/browser-agent.types.js +116 -0
  249. package/dist/edge/types/browser-agent.types.js.map +1 -0
  250. package/dist/edge/types/index.d.ts +11 -0
  251. package/dist/edge/types/index.d.ts.map +1 -0
  252. package/dist/edge/types/index.js +17 -0
  253. package/dist/edge/types/index.js.map +1 -0
  254. package/dist/edge/types/storage.types.d.ts +207 -0
  255. package/dist/edge/types/storage.types.d.ts.map +1 -0
  256. package/dist/edge/types/storage.types.js +47 -0
  257. package/dist/edge/types/storage.types.js.map +1 -0
  258. package/dist/edge/wasm/shims.d.ts +224 -0
  259. package/dist/edge/wasm/shims.d.ts.map +1 -0
  260. package/dist/edge/wasm/shims.js +667 -0
  261. package/dist/edge/wasm/shims.js.map +1 -0
  262. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts +33 -0
  263. package/dist/mcp/handlers/NewDomainToolsHandler.d.ts.map +1 -0
  264. package/dist/mcp/handlers/NewDomainToolsHandler.js +305 -0
  265. package/dist/mcp/handlers/NewDomainToolsHandler.js.map +1 -0
  266. package/dist/mcp/handlers/filtered/index.d.ts +15 -19
  267. package/dist/mcp/handlers/filtered/index.d.ts.map +1 -1
  268. package/dist/mcp/handlers/filtered/index.js +16 -27
  269. package/dist/mcp/handlers/filtered/index.js.map +1 -1
  270. package/dist/mcp/handlers/integration/index.d.ts +5 -4
  271. package/dist/mcp/handlers/integration/index.d.ts.map +1 -1
  272. package/dist/mcp/handlers/integration/index.js +7 -7
  273. package/dist/mcp/handlers/integration/index.js.map +1 -1
  274. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts +54 -0
  275. package/dist/mcp/handlers/ruvector/RuVectorHandler.d.ts.map +1 -0
  276. package/dist/mcp/handlers/ruvector/RuVectorHandler.js +325 -0
  277. package/dist/mcp/handlers/ruvector/RuVectorHandler.js.map +1 -0
  278. package/dist/mcp/handlers/ruvector/index.d.ts +5 -0
  279. package/dist/mcp/handlers/ruvector/index.d.ts.map +1 -0
  280. package/dist/mcp/handlers/ruvector/index.js +9 -0
  281. package/dist/mcp/handlers/ruvector/index.js.map +1 -0
  282. package/dist/mcp/server-instructions.d.ts +1 -1
  283. package/dist/mcp/server-instructions.js +1 -1
  284. package/dist/mcp/server.d.ts.map +1 -1
  285. package/dist/mcp/server.js +114 -22
  286. package/dist/mcp/server.js.map +1 -1
  287. package/dist/mcp/tools.d.ts +8 -0
  288. package/dist/mcp/tools.d.ts.map +1 -1
  289. package/dist/mcp/tools.js +412 -1
  290. package/dist/mcp/tools.js.map +1 -1
  291. package/dist/nervous-system/adapters/BTSPAdapter.d.ts +342 -0
  292. package/dist/nervous-system/adapters/BTSPAdapter.d.ts.map +1 -0
  293. package/dist/nervous-system/adapters/BTSPAdapter.js +494 -0
  294. package/dist/nervous-system/adapters/BTSPAdapter.js.map +1 -0
  295. package/dist/nervous-system/adapters/CircadianController.d.ts +560 -0
  296. package/dist/nervous-system/adapters/CircadianController.d.ts.map +1 -0
  297. package/dist/nervous-system/adapters/CircadianController.js +882 -0
  298. package/dist/nervous-system/adapters/CircadianController.js.map +1 -0
  299. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts +337 -0
  300. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.d.ts.map +1 -0
  301. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js +532 -0
  302. package/dist/nervous-system/adapters/GlobalWorkspaceAdapter.js.map +1 -0
  303. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts +444 -0
  304. package/dist/nervous-system/adapters/HdcMemoryAdapter.d.ts.map +1 -0
  305. package/dist/nervous-system/adapters/HdcMemoryAdapter.js +715 -0
  306. package/dist/nervous-system/adapters/HdcMemoryAdapter.js.map +1 -0
  307. package/dist/nervous-system/adapters/ReflexLayer.d.ts +231 -0
  308. package/dist/nervous-system/adapters/ReflexLayer.d.ts.map +1 -0
  309. package/dist/nervous-system/adapters/ReflexLayer.js +309 -0
  310. package/dist/nervous-system/adapters/ReflexLayer.js.map +1 -0
  311. package/dist/nervous-system/index.d.ts +25 -0
  312. package/dist/nervous-system/index.d.ts.map +1 -0
  313. package/dist/nervous-system/index.js +80 -0
  314. package/dist/nervous-system/index.js.map +1 -0
  315. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts +266 -0
  316. package/dist/nervous-system/integration/BTSPLearningEngine.d.ts.map +1 -0
  317. package/dist/nervous-system/integration/BTSPLearningEngine.js +587 -0
  318. package/dist/nervous-system/integration/BTSPLearningEngine.js.map +1 -0
  319. package/dist/nervous-system/integration/CircadianAgent.d.ts +389 -0
  320. package/dist/nervous-system/integration/CircadianAgent.d.ts.map +1 -0
  321. package/dist/nervous-system/integration/CircadianAgent.js +696 -0
  322. package/dist/nervous-system/integration/CircadianAgent.js.map +1 -0
  323. package/dist/nervous-system/integration/HybridPatternStore.d.ts +244 -0
  324. package/dist/nervous-system/integration/HybridPatternStore.d.ts.map +1 -0
  325. package/dist/nervous-system/integration/HybridPatternStore.js +622 -0
  326. package/dist/nervous-system/integration/HybridPatternStore.js.map +1 -0
  327. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts +459 -0
  328. package/dist/nervous-system/integration/NervousSystemEnhancement.d.ts.map +1 -0
  329. package/dist/nervous-system/integration/NervousSystemEnhancement.js +921 -0
  330. package/dist/nervous-system/integration/NervousSystemEnhancement.js.map +1 -0
  331. package/dist/nervous-system/integration/WorkspaceAgent.d.ts +398 -0
  332. package/dist/nervous-system/integration/WorkspaceAgent.d.ts.map +1 -0
  333. package/dist/nervous-system/integration/WorkspaceAgent.js +722 -0
  334. package/dist/nervous-system/integration/WorkspaceAgent.js.map +1 -0
  335. package/dist/nervous-system/integration/index.d.ts +22 -0
  336. package/dist/nervous-system/integration/index.d.ts.map +1 -0
  337. package/dist/nervous-system/integration/index.js +44 -0
  338. package/dist/nervous-system/integration/index.js.map +1 -0
  339. package/dist/nervous-system/persistence/BTSPSerializer.d.ts +96 -0
  340. package/dist/nervous-system/persistence/BTSPSerializer.d.ts.map +1 -0
  341. package/dist/nervous-system/persistence/BTSPSerializer.js +223 -0
  342. package/dist/nervous-system/persistence/BTSPSerializer.js.map +1 -0
  343. package/dist/nervous-system/persistence/CircadianSerializer.d.ts +90 -0
  344. package/dist/nervous-system/persistence/CircadianSerializer.d.ts.map +1 -0
  345. package/dist/nervous-system/persistence/CircadianSerializer.js +239 -0
  346. package/dist/nervous-system/persistence/CircadianSerializer.js.map +1 -0
  347. package/dist/nervous-system/persistence/HdcSerializer.d.ts +100 -0
  348. package/dist/nervous-system/persistence/HdcSerializer.d.ts.map +1 -0
  349. package/dist/nervous-system/persistence/HdcSerializer.js +259 -0
  350. package/dist/nervous-system/persistence/HdcSerializer.js.map +1 -0
  351. package/dist/nervous-system/persistence/INervousSystemStore.d.ts +208 -0
  352. package/dist/nervous-system/persistence/INervousSystemStore.d.ts.map +1 -0
  353. package/dist/nervous-system/persistence/INervousSystemStore.js +11 -0
  354. package/dist/nervous-system/persistence/INervousSystemStore.js.map +1 -0
  355. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts +187 -0
  356. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.d.ts.map +1 -0
  357. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js +411 -0
  358. package/dist/nervous-system/persistence/NervousSystemPersistenceManager.js.map +1 -0
  359. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts +98 -0
  360. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.d.ts.map +1 -0
  361. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js +510 -0
  362. package/dist/nervous-system/persistence/SQLiteNervousSystemStore.js.map +1 -0
  363. package/dist/nervous-system/persistence/index.d.ts +22 -0
  364. package/dist/nervous-system/persistence/index.d.ts.map +1 -0
  365. package/dist/nervous-system/persistence/index.js +45 -0
  366. package/dist/nervous-system/persistence/index.js.map +1 -0
  367. package/dist/nervous-system/wasm-loader.d.ts +52 -0
  368. package/dist/nervous-system/wasm-loader.d.ts.map +1 -0
  369. package/dist/nervous-system/wasm-loader.js +188 -0
  370. package/dist/nervous-system/wasm-loader.js.map +1 -0
  371. package/dist/persistence/HybridPersistenceProvider.d.ts +184 -0
  372. package/dist/persistence/HybridPersistenceProvider.d.ts.map +1 -0
  373. package/dist/persistence/HybridPersistenceProvider.js +1086 -0
  374. package/dist/persistence/HybridPersistenceProvider.js.map +1 -0
  375. package/dist/persistence/IPersistenceProvider.d.ts +657 -0
  376. package/dist/persistence/IPersistenceProvider.d.ts.map +1 -0
  377. package/dist/persistence/IPersistenceProvider.js +11 -0
  378. package/dist/persistence/IPersistenceProvider.js.map +1 -0
  379. package/dist/persistence/SupabaseConfig.d.ts +176 -0
  380. package/dist/persistence/SupabaseConfig.d.ts.map +1 -0
  381. package/dist/persistence/SupabaseConfig.js +277 -0
  382. package/dist/persistence/SupabaseConfig.js.map +1 -0
  383. package/dist/persistence/SupabasePersistenceProvider.d.ts +143 -0
  384. package/dist/persistence/SupabasePersistenceProvider.d.ts.map +1 -0
  385. package/dist/persistence/SupabasePersistenceProvider.js +955 -0
  386. package/dist/persistence/SupabasePersistenceProvider.js.map +1 -0
  387. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts +213 -0
  388. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.d.ts.map +1 -0
  389. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js +468 -0
  390. package/dist/persistence/adapters/CodeIntelligenceSyncAdapter.js.map +1 -0
  391. package/dist/persistence/adapters/MemorySyncAdapter.d.ts +115 -0
  392. package/dist/persistence/adapters/MemorySyncAdapter.d.ts.map +1 -0
  393. package/dist/persistence/adapters/MemorySyncAdapter.js +291 -0
  394. package/dist/persistence/adapters/MemorySyncAdapter.js.map +1 -0
  395. package/dist/persistence/adapters/index.d.ts +11 -0
  396. package/dist/persistence/adapters/index.d.ts.map +1 -0
  397. package/dist/persistence/adapters/index.js +20 -0
  398. package/dist/persistence/adapters/index.js.map +1 -0
  399. package/dist/persistence/index.d.ts +14 -0
  400. package/dist/persistence/index.d.ts.map +1 -1
  401. package/dist/persistence/index.js +36 -1
  402. package/dist/persistence/index.js.map +1 -1
  403. package/dist/planning/GOAPPlanner.d.ts +1 -0
  404. package/dist/planning/GOAPPlanner.d.ts.map +1 -1
  405. package/dist/planning/GOAPPlanner.js +12 -0
  406. package/dist/planning/GOAPPlanner.js.map +1 -1
  407. package/package.json +31 -8
  408. package/dist/alerting/AlertManager.d.ts +0 -120
  409. package/dist/alerting/AlertManager.d.ts.map +0 -1
  410. package/dist/alerting/AlertManager.js +0 -345
  411. package/dist/alerting/AlertManager.js.map +0 -1
  412. package/dist/alerting/FeedbackRouter.d.ts +0 -98
  413. package/dist/alerting/FeedbackRouter.d.ts.map +0 -1
  414. package/dist/alerting/FeedbackRouter.js +0 -331
  415. package/dist/alerting/FeedbackRouter.js.map +0 -1
  416. package/dist/alerting/StrategyApplicator.d.ts +0 -120
  417. package/dist/alerting/StrategyApplicator.d.ts.map +0 -1
  418. package/dist/alerting/StrategyApplicator.js +0 -299
  419. package/dist/alerting/StrategyApplicator.js.map +0 -1
  420. package/dist/alerting/index.d.ts +0 -68
  421. package/dist/alerting/index.d.ts.map +0 -1
  422. package/dist/alerting/index.js +0 -112
  423. package/dist/alerting/index.js.map +0 -1
  424. package/dist/alerting/types.d.ts +0 -118
  425. package/dist/alerting/types.d.ts.map +0 -1
  426. package/dist/alerting/types.js +0 -11
  427. package/dist/alerting/types.js.map +0 -1
  428. package/dist/cli/commands/fleet/backup.d.ts +0 -49
  429. package/dist/cli/commands/fleet/backup.d.ts.map +0 -1
  430. package/dist/cli/commands/fleet/backup.js +0 -88
  431. package/dist/cli/commands/fleet/backup.js.map +0 -1
  432. package/dist/cli/commands/fleet/health.d.ts +0 -154
  433. package/dist/cli/commands/fleet/health.d.ts.map +0 -1
  434. package/dist/cli/commands/fleet/health.js +0 -483
  435. package/dist/cli/commands/fleet/health.js.map +0 -1
  436. package/dist/cli/commands/fleet/init.d.ts +0 -11
  437. package/dist/cli/commands/fleet/init.d.ts.map +0 -1
  438. package/dist/cli/commands/fleet/init.js +0 -91
  439. package/dist/cli/commands/fleet/init.js.map +0 -1
  440. package/dist/cli/commands/fleet/logs.d.ts +0 -21
  441. package/dist/cli/commands/fleet/logs.d.ts.map +0 -1
  442. package/dist/cli/commands/fleet/logs.js +0 -267
  443. package/dist/cli/commands/fleet/logs.js.map +0 -1
  444. package/dist/cli/commands/fleet/metrics.d.ts +0 -27
  445. package/dist/cli/commands/fleet/metrics.d.ts.map +0 -1
  446. package/dist/cli/commands/fleet/metrics.js +0 -369
  447. package/dist/cli/commands/fleet/metrics.js.map +0 -1
  448. package/dist/cli/commands/fleet/monitor.d.ts +0 -18
  449. package/dist/cli/commands/fleet/monitor.d.ts.map +0 -1
  450. package/dist/cli/commands/fleet/monitor.js +0 -237
  451. package/dist/cli/commands/fleet/monitor.js.map +0 -1
  452. package/dist/cli/commands/fleet/optimize.d.ts +0 -42
  453. package/dist/cli/commands/fleet/optimize.d.ts.map +0 -1
  454. package/dist/cli/commands/fleet/optimize.js +0 -135
  455. package/dist/cli/commands/fleet/optimize.js.map +0 -1
  456. package/dist/cli/commands/fleet/recover.d.ts +0 -22
  457. package/dist/cli/commands/fleet/recover.d.ts.map +0 -1
  458. package/dist/cli/commands/fleet/recover.js +0 -99
  459. package/dist/cli/commands/fleet/recover.js.map +0 -1
  460. package/dist/cli/commands/fleet/restart.d.ts +0 -18
  461. package/dist/cli/commands/fleet/restart.d.ts.map +0 -1
  462. package/dist/cli/commands/fleet/restart.js +0 -290
  463. package/dist/cli/commands/fleet/restart.js.map +0 -1
  464. package/dist/cli/commands/fleet/scale.d.ts +0 -9
  465. package/dist/cli/commands/fleet/scale.d.ts.map +0 -1
  466. package/dist/cli/commands/fleet/scale.js +0 -77
  467. package/dist/cli/commands/fleet/scale.js.map +0 -1
  468. package/dist/cli/commands/fleet/shutdown.d.ts +0 -19
  469. package/dist/cli/commands/fleet/shutdown.d.ts.map +0 -1
  470. package/dist/cli/commands/fleet/shutdown.js +0 -307
  471. package/dist/cli/commands/fleet/shutdown.js.map +0 -1
  472. package/dist/cli/commands/fleet/status.d.ts +0 -10
  473. package/dist/cli/commands/fleet/status.d.ts.map +0 -1
  474. package/dist/cli/commands/fleet/status.js +0 -97
  475. package/dist/cli/commands/fleet/status.js.map +0 -1
  476. package/dist/cli/commands/fleet/topology.d.ts +0 -23
  477. package/dist/cli/commands/fleet/topology.d.ts.map +0 -1
  478. package/dist/cli/commands/fleet/topology.js +0 -376
  479. package/dist/cli/commands/fleet/topology.js.map +0 -1
  480. package/dist/cli/commands/monitor/alerts.d.ts +0 -45
  481. package/dist/cli/commands/monitor/alerts.d.ts.map +0 -1
  482. package/dist/cli/commands/monitor/alerts.js +0 -168
  483. package/dist/cli/commands/monitor/alerts.js.map +0 -1
  484. package/dist/cli/commands/monitor/analyze.d.ts +0 -49
  485. package/dist/cli/commands/monitor/analyze.d.ts.map +0 -1
  486. package/dist/cli/commands/monitor/analyze.js +0 -209
  487. package/dist/cli/commands/monitor/analyze.js.map +0 -1
  488. package/dist/cli/commands/monitor/compare.d.ts +0 -38
  489. package/dist/cli/commands/monitor/compare.d.ts.map +0 -1
  490. package/dist/cli/commands/monitor/compare.js +0 -177
  491. package/dist/cli/commands/monitor/compare.js.map +0 -1
  492. package/dist/cli/commands/monitor/dashboard.d.ts +0 -34
  493. package/dist/cli/commands/monitor/dashboard.d.ts.map +0 -1
  494. package/dist/cli/commands/monitor/dashboard.js +0 -157
  495. package/dist/cli/commands/monitor/dashboard.js.map +0 -1
  496. package/dist/cli/commands/monitor/export.d.ts +0 -36
  497. package/dist/cli/commands/monitor/export.d.ts.map +0 -1
  498. package/dist/cli/commands/monitor/export.js +0 -157
  499. package/dist/cli/commands/monitor/export.js.map +0 -1
  500. package/dist/cli/commands/monitor/index.d.ts +0 -11
  501. package/dist/cli/commands/monitor/index.d.ts.map +0 -1
  502. package/dist/cli/commands/monitor/index.js +0 -14
  503. package/dist/cli/commands/monitor/index.js.map +0 -1
  504. package/dist/cli/commands/quality/baseline.d.ts +0 -27
  505. package/dist/cli/commands/quality/baseline.d.ts.map +0 -1
  506. package/dist/cli/commands/quality/baseline.js +0 -124
  507. package/dist/cli/commands/quality/baseline.js.map +0 -1
  508. package/dist/cli/commands/quality/compare.d.ts +0 -36
  509. package/dist/cli/commands/quality/compare.d.ts.map +0 -1
  510. package/dist/cli/commands/quality/compare.js +0 -136
  511. package/dist/cli/commands/quality/compare.js.map +0 -1
  512. package/dist/cli/commands/quality/decision.d.ts +0 -81
  513. package/dist/cli/commands/quality/decision.d.ts.map +0 -1
  514. package/dist/cli/commands/quality/decision.js +0 -319
  515. package/dist/cli/commands/quality/decision.js.map +0 -1
  516. package/dist/cli/commands/quality/gate.d.ts +0 -47
  517. package/dist/cli/commands/quality/gate.d.ts.map +0 -1
  518. package/dist/cli/commands/quality/gate.js +0 -205
  519. package/dist/cli/commands/quality/gate.js.map +0 -1
  520. package/dist/cli/commands/quality/index.d.ts +0 -17
  521. package/dist/cli/commands/quality/index.d.ts.map +0 -1
  522. package/dist/cli/commands/quality/index.js +0 -41
  523. package/dist/cli/commands/quality/index.js.map +0 -1
  524. package/dist/cli/commands/quality/policy.d.ts +0 -57
  525. package/dist/cli/commands/quality/policy.d.ts.map +0 -1
  526. package/dist/cli/commands/quality/policy.js +0 -359
  527. package/dist/cli/commands/quality/policy.js.map +0 -1
  528. package/dist/cli/commands/quality/risk.d.ts +0 -41
  529. package/dist/cli/commands/quality/risk.d.ts.map +0 -1
  530. package/dist/cli/commands/quality/risk.js +0 -255
  531. package/dist/cli/commands/quality/risk.js.map +0 -1
  532. package/dist/cli/commands/quality/trends.d.ts +0 -40
  533. package/dist/cli/commands/quality/trends.d.ts.map +0 -1
  534. package/dist/cli/commands/quality/trends.js +0 -122
  535. package/dist/cli/commands/quality/trends.js.map +0 -1
  536. package/dist/cli/commands/quality/validate.d.ts +0 -44
  537. package/dist/cli/commands/quality/validate.d.ts.map +0 -1
  538. package/dist/cli/commands/quality/validate.js +0 -234
  539. package/dist/cli/commands/quality/validate.js.map +0 -1
  540. package/dist/cli/commands/test/analyze-failures.d.ts +0 -39
  541. package/dist/cli/commands/test/analyze-failures.d.ts.map +0 -1
  542. package/dist/cli/commands/test/analyze-failures.js +0 -113
  543. package/dist/cli/commands/test/analyze-failures.js.map +0 -1
  544. package/dist/cli/commands/test/clean.d.ts +0 -3
  545. package/dist/cli/commands/test/clean.d.ts.map +0 -1
  546. package/dist/cli/commands/test/clean.js +0 -148
  547. package/dist/cli/commands/test/clean.js.map +0 -1
  548. package/dist/cli/commands/test/debug.d.ts +0 -3
  549. package/dist/cli/commands/test/debug.d.ts.map +0 -1
  550. package/dist/cli/commands/test/debug.js +0 -167
  551. package/dist/cli/commands/test/debug.js.map +0 -1
  552. package/dist/cli/commands/test/diff.d.ts +0 -3
  553. package/dist/cli/commands/test/diff.d.ts.map +0 -1
  554. package/dist/cli/commands/test/diff.js +0 -195
  555. package/dist/cli/commands/test/diff.js.map +0 -1
  556. package/dist/cli/commands/test/flakiness.d.ts +0 -32
  557. package/dist/cli/commands/test/flakiness.d.ts.map +0 -1
  558. package/dist/cli/commands/test/flakiness.js +0 -121
  559. package/dist/cli/commands/test/flakiness.js.map +0 -1
  560. package/dist/cli/commands/test/index.d.ts +0 -17
  561. package/dist/cli/commands/test/index.d.ts.map +0 -1
  562. package/dist/cli/commands/test/index.js +0 -45
  563. package/dist/cli/commands/test/index.js.map +0 -1
  564. package/dist/cli/commands/test/mutate.d.ts +0 -29
  565. package/dist/cli/commands/test/mutate.d.ts.map +0 -1
  566. package/dist/cli/commands/test/mutate.js +0 -163
  567. package/dist/cli/commands/test/mutate.js.map +0 -1
  568. package/dist/cli/commands/test/parallel.d.ts +0 -3
  569. package/dist/cli/commands/test/parallel.d.ts.map +0 -1
  570. package/dist/cli/commands/test/parallel.js +0 -117
  571. package/dist/cli/commands/test/parallel.js.map +0 -1
  572. package/dist/cli/commands/test/profile.d.ts +0 -3
  573. package/dist/cli/commands/test/profile.d.ts.map +0 -1
  574. package/dist/cli/commands/test/profile.js +0 -156
  575. package/dist/cli/commands/test/profile.js.map +0 -1
  576. package/dist/cli/commands/test/queue.d.ts +0 -3
  577. package/dist/cli/commands/test/queue.d.ts.map +0 -1
  578. package/dist/cli/commands/test/queue.js +0 -140
  579. package/dist/cli/commands/test/queue.js.map +0 -1
  580. package/dist/cli/commands/test/retry.d.ts +0 -3
  581. package/dist/cli/commands/test/retry.d.ts.map +0 -1
  582. package/dist/cli/commands/test/retry.js +0 -105
  583. package/dist/cli/commands/test/retry.js.map +0 -1
  584. package/dist/cli/commands/test/snapshot.d.ts +0 -3
  585. package/dist/cli/commands/test/snapshot.d.ts.map +0 -1
  586. package/dist/cli/commands/test/snapshot.js +0 -176
  587. package/dist/cli/commands/test/snapshot.js.map +0 -1
  588. package/dist/cli/commands/test/trace.d.ts +0 -3
  589. package/dist/cli/commands/test/trace.d.ts.map +0 -1
  590. package/dist/cli/commands/test/trace.js +0 -137
  591. package/dist/cli/commands/test/trace.js.map +0 -1
  592. package/dist/cli/commands/test/watch.d.ts +0 -3
  593. package/dist/cli/commands/test/watch.d.ts.map +0 -1
  594. package/dist/cli/commands/test/watch.js +0 -130
  595. package/dist/cli/commands/test/watch.js.map +0 -1
  596. package/dist/cli/index-spec.d.ts +0 -3
  597. package/dist/cli/index-spec.d.ts.map +0 -1
  598. package/dist/cli/index-spec.js +0 -154
  599. package/dist/cli/index-spec.js.map +0 -1
  600. package/dist/cli/index-working.d.ts +0 -7
  601. package/dist/cli/index-working.d.ts.map +0 -1
  602. package/dist/cli/index-working.js +0 -617
  603. package/dist/cli/index-working.js.map +0 -1
  604. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts +0 -83
  605. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.d.ts.map +0 -1
  606. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js +0 -130
  607. package/dist/mcp/handlers/filtered/coverage-analyzer-filtered.js.map +0 -1
  608. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts +0 -58
  609. package/dist/mcp/handlers/filtered/flaky-detector-filtered.d.ts.map +0 -1
  610. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js +0 -84
  611. package/dist/mcp/handlers/filtered/flaky-detector-filtered.js.map +0 -1
  612. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts +0 -54
  613. package/dist/mcp/handlers/filtered/security-scanner-filtered.d.ts.map +0 -1
  614. package/dist/mcp/handlers/filtered/security-scanner-filtered.js +0 -73
  615. package/dist/mcp/handlers/filtered/security-scanner-filtered.js.map +0 -1
  616. package/dist/mcp/handlers/integration/contract-validate.d.ts +0 -10
  617. package/dist/mcp/handlers/integration/contract-validate.d.ts.map +0 -1
  618. package/dist/mcp/handlers/integration/contract-validate.js +0 -348
  619. package/dist/mcp/handlers/integration/contract-validate.js.map +0 -1
  620. package/dist/reporting/ResultAggregator.d.ts +0 -107
  621. package/dist/reporting/ResultAggregator.d.ts.map +0 -1
  622. package/dist/reporting/ResultAggregator.js +0 -435
  623. package/dist/reporting/ResultAggregator.js.map +0 -1
  624. package/dist/reporting/index.d.ts +0 -48
  625. package/dist/reporting/index.d.ts.map +0 -1
  626. package/dist/reporting/index.js +0 -154
  627. package/dist/reporting/index.js.map +0 -1
  628. package/dist/reporting/reporters/ControlLoopReporter.d.ts +0 -128
  629. package/dist/reporting/reporters/ControlLoopReporter.d.ts.map +0 -1
  630. package/dist/reporting/reporters/ControlLoopReporter.js +0 -417
  631. package/dist/reporting/reporters/ControlLoopReporter.js.map +0 -1
  632. package/dist/reporting/reporters/HumanReadableReporter.d.ts +0 -140
  633. package/dist/reporting/reporters/HumanReadableReporter.d.ts.map +0 -1
  634. package/dist/reporting/reporters/HumanReadableReporter.js +0 -524
  635. package/dist/reporting/reporters/HumanReadableReporter.js.map +0 -1
  636. package/dist/reporting/reporters/JSONReporter.d.ts +0 -251
  637. package/dist/reporting/reporters/JSONReporter.d.ts.map +0 -1
  638. package/dist/reporting/reporters/JSONReporter.js +0 -325
  639. package/dist/reporting/reporters/JSONReporter.js.map +0 -1
  640. package/dist/reporting/reporters/index.d.ts +0 -14
  641. package/dist/reporting/reporters/index.d.ts.map +0 -1
  642. package/dist/reporting/reporters/index.js +0 -19
  643. package/dist/reporting/reporters/index.js.map +0 -1
  644. package/dist/reporting/types.d.ts +0 -427
  645. package/dist/reporting/types.d.ts.map +0 -1
  646. package/dist/reporting/types.js +0 -12
  647. package/dist/reporting/types.js.map +0 -1
@@ -0,0 +1,158 @@
1
+ /**
2
+ * TURN Manager for @ruvector/edge P2P
3
+ *
4
+ * Manages TURN server credentials, handles credential refresh, selects optimal
5
+ * TURN servers based on latency, and monitors server health.
6
+ *
7
+ * @module edge/p2p/nat/TURNManager
8
+ * @version 1.0.0
9
+ */
10
+ import { ICEServer } from '../webrtc/types';
11
+ import { TURNConfig, TURNServerSelection, TURNManagerConfig, NATEventType, NATEventHandler } from './types';
12
+ /**
13
+ * TURN server health status
14
+ */
15
+ interface TURNServerHealth {
16
+ /** Server configuration */
17
+ server: TURNConfig;
18
+ /** Whether server is healthy */
19
+ healthy: boolean;
20
+ /** Last measured latency in ms */
21
+ latencyMs: number;
22
+ /** Last health check timestamp */
23
+ lastCheckAt: number;
24
+ /** Consecutive failure count */
25
+ failureCount: number;
26
+ /** Last error message */
27
+ lastError?: string;
28
+ }
29
+ /**
30
+ * TURN Manager - Manages TURN server credentials and selection
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const turnManager = new TURNManager({
35
+ * servers: [
36
+ * {
37
+ * urls: 'turn:turn1.example.com:3478',
38
+ * username: 'user',
39
+ * credential: 'pass',
40
+ * credentialType: 'password',
41
+ * },
42
+ * ],
43
+ * credentialConfig: {
44
+ * refreshUrl: 'https://api.example.com/turn/credentials',
45
+ * refreshBeforeExpiry: 300000, // 5 minutes
46
+ * maxRetries: 3,
47
+ * retryDelay: 1000,
48
+ * },
49
+ * });
50
+ *
51
+ * // Get optimal TURN server
52
+ * const selection = await turnManager.selectOptimalServer();
53
+ * console.log('Selected server:', selection.server.urls);
54
+ *
55
+ * // Get ICE servers for RTCPeerConnection
56
+ * const iceServers = turnManager.getICEServers();
57
+ * ```
58
+ */
59
+ export declare class TURNManager {
60
+ private readonly config;
61
+ private serverHealth;
62
+ private credentialStates;
63
+ private eventHandlers;
64
+ private healthCheckInterval?;
65
+ private isDestroyed;
66
+ /**
67
+ * Create a new TURN Manager
68
+ *
69
+ * @param config - Manager configuration
70
+ */
71
+ constructor(config: TURNManagerConfig);
72
+ /**
73
+ * Select optimal TURN server based on latency
74
+ *
75
+ * @returns Promise resolving to server selection with alternatives
76
+ */
77
+ selectOptimalServer(): Promise<TURNServerSelection>;
78
+ /**
79
+ * Get ICE servers configuration for RTCPeerConnection
80
+ *
81
+ * @param includeUnhealthy - Include unhealthy servers (default: false)
82
+ * @returns Array of ICE server configurations
83
+ */
84
+ getICEServers(includeUnhealthy?: boolean): ICEServer[];
85
+ /**
86
+ * Get a specific server's current credentials
87
+ *
88
+ * @param serverUrl - Server URL to get credentials for
89
+ * @returns Server configuration with current credentials or null
90
+ */
91
+ getServerCredentials(serverUrl: string): TURNConfig | null;
92
+ /**
93
+ * Manually refresh credentials for a server
94
+ *
95
+ * @param serverUrl - Server URL to refresh credentials for
96
+ * @returns Promise resolving to refreshed credentials
97
+ */
98
+ refreshCredentials(serverUrl: string): Promise<TURNConfig>;
99
+ /**
100
+ * Add a new TURN server to the manager
101
+ *
102
+ * @param server - Server configuration to add
103
+ */
104
+ addServer(server: TURNConfig): void;
105
+ /**
106
+ * Remove a TURN server from the manager
107
+ *
108
+ * @param serverUrl - Server URL to remove
109
+ */
110
+ removeServer(serverUrl: string): void;
111
+ /**
112
+ * Get server health status
113
+ *
114
+ * @param serverUrl - Server URL to check
115
+ * @returns Health status or null if not found
116
+ */
117
+ getServerHealth(serverUrl: string): TURNServerHealth | null;
118
+ /**
119
+ * Get all server health statuses
120
+ *
121
+ * @returns Map of server URLs to health statuses
122
+ */
123
+ getAllServerHealth(): Map<string, TURNServerHealth>;
124
+ /**
125
+ * Force health check for all servers
126
+ */
127
+ checkAllServersHealth(): Promise<void>;
128
+ /**
129
+ * Register event handler
130
+ *
131
+ * @param type - Event type to handle
132
+ * @param handler - Event handler function
133
+ * @returns Unsubscribe function
134
+ */
135
+ on<T>(type: NATEventType, handler: NATEventHandler<T>): () => void;
136
+ /**
137
+ * Get current configuration
138
+ */
139
+ getConfig(): TURNManagerConfig;
140
+ /**
141
+ * Destroy the manager and cleanup resources
142
+ */
143
+ destroy(): void;
144
+ private getServerUrl;
145
+ private getHealthyServers;
146
+ private testServerLatencies;
147
+ private measureLatency;
148
+ private testTurnConnectivity;
149
+ private checkServerHealth;
150
+ private startHealthMonitoring;
151
+ private scheduleCredentialRefresh;
152
+ private fetchNewCredentials;
153
+ private doCredentialFetch;
154
+ private delay;
155
+ private emitEvent;
156
+ }
157
+ export default TURNManager;
158
+ //# sourceMappingURL=TURNManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TURNManager.d.ts","sourceRoot":"","sources":["../../../../src/edge/p2p/nat/TURNManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EACL,UAAU,EAGV,mBAAmB,EACnB,iBAAiB,EACjB,YAAY,EAEZ,eAAe,EAEhB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,UAAU,gBAAgB;IACxB,2BAA2B;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,yBAAyB;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,YAAY,CAA4C;IAChE,OAAO,CAAC,gBAAgB,CAA2C;IACnE,OAAO,CAAC,aAAa,CAAsD;IAC3E,OAAO,CAAC,mBAAmB,CAAC,CAAiC;IAC7D,OAAO,CAAC,WAAW,CAAkB;IAErC;;;;OAIG;gBACS,MAAM,EAAE,iBAAiB;IAqCrC;;;;OAIG;IACU,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAwBhE;;;;;OAKG;IACI,aAAa,CAAC,gBAAgB,GAAE,OAAe,GAAG,SAAS,EAAE;IAapE;;;;;OAKG;IACI,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAKjE;;;;;OAKG;IACU,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAavE;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IA0B1C;;;;OAIG;IACI,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAkB5C;;;;;OAKG;IACI,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAIlE;;;;OAIG;IACI,kBAAkB,IAAI,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAI1D;;OAEG;IACU,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnD;;;;;;OAMG;IACI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAQzE;;OAEG;IACI,SAAS,IAAI,iBAAiB;IAIrC;;OAEG;IACI,OAAO,IAAI,IAAI;IAyBtB,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,iBAAiB;YAUX,mBAAmB;YA2BnB,cAAc;YAWd,oBAAoB;YAwEpB,iBAAiB;IA4B/B,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,yBAAyB;YA6BnB,mBAAmB;YA2EnB,iBAAiB;IA2C/B,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,SAAS;CAiBlB;AAED,eAAe,WAAW,CAAC"}
@@ -0,0 +1,547 @@
1
+ "use strict";
2
+ /**
3
+ * TURN Manager for @ruvector/edge P2P
4
+ *
5
+ * Manages TURN server credentials, handles credential refresh, selects optimal
6
+ * TURN servers based on latency, and monitors server health.
7
+ *
8
+ * @module edge/p2p/nat/TURNManager
9
+ * @version 1.0.0
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TURNManager = void 0;
13
+ const types_1 = require("./types");
14
+ /**
15
+ * TURN Manager - Manages TURN server credentials and selection
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const turnManager = new TURNManager({
20
+ * servers: [
21
+ * {
22
+ * urls: 'turn:turn1.example.com:3478',
23
+ * username: 'user',
24
+ * credential: 'pass',
25
+ * credentialType: 'password',
26
+ * },
27
+ * ],
28
+ * credentialConfig: {
29
+ * refreshUrl: 'https://api.example.com/turn/credentials',
30
+ * refreshBeforeExpiry: 300000, // 5 minutes
31
+ * maxRetries: 3,
32
+ * retryDelay: 1000,
33
+ * },
34
+ * });
35
+ *
36
+ * // Get optimal TURN server
37
+ * const selection = await turnManager.selectOptimalServer();
38
+ * console.log('Selected server:', selection.server.urls);
39
+ *
40
+ * // Get ICE servers for RTCPeerConnection
41
+ * const iceServers = turnManager.getICEServers();
42
+ * ```
43
+ */
44
+ class TURNManager {
45
+ /**
46
+ * Create a new TURN Manager
47
+ *
48
+ * @param config - Manager configuration
49
+ */
50
+ constructor(config) {
51
+ this.serverHealth = new Map();
52
+ this.credentialStates = new Map();
53
+ this.eventHandlers = new Map();
54
+ this.isDestroyed = false;
55
+ this.config = {
56
+ ...types_1.DEFAULT_TURN_MANAGER_CONFIG,
57
+ ...config,
58
+ };
59
+ // Initialize server health tracking
60
+ for (const server of this.config.servers) {
61
+ const url = this.getServerUrl(server);
62
+ this.serverHealth.set(url, {
63
+ server,
64
+ healthy: true, // Assume healthy until proven otherwise
65
+ latencyMs: Infinity,
66
+ lastCheckAt: 0,
67
+ failureCount: 0,
68
+ });
69
+ }
70
+ // Initialize credential states
71
+ for (const server of this.config.servers) {
72
+ if (server.expiresAt) {
73
+ const url = this.getServerUrl(server);
74
+ this.credentialStates.set(url, {
75
+ credentials: server,
76
+ fetchedAt: Date.now(),
77
+ refreshing: false,
78
+ });
79
+ this.scheduleCredentialRefresh(server);
80
+ }
81
+ }
82
+ // Start health monitoring if enabled
83
+ if (this.config.enableHealthMonitoring) {
84
+ this.startHealthMonitoring();
85
+ }
86
+ }
87
+ /**
88
+ * Select optimal TURN server based on latency
89
+ *
90
+ * @returns Promise resolving to server selection with alternatives
91
+ */
92
+ async selectOptimalServer() {
93
+ const healthyServers = this.getHealthyServers();
94
+ if (healthyServers.length === 0) {
95
+ throw new Error('No healthy TURN servers available');
96
+ }
97
+ // Test latency to all healthy servers
98
+ const latencyResults = await this.testServerLatencies(healthyServers);
99
+ // Sort by latency
100
+ latencyResults.sort((a, b) => a.latencyMs - b.latencyMs);
101
+ const optimal = latencyResults[0];
102
+ const alternatives = latencyResults.slice(1);
103
+ return {
104
+ server: optimal.server,
105
+ latencyMs: optimal.latencyMs,
106
+ selectedAt: Date.now(),
107
+ alternatives,
108
+ };
109
+ }
110
+ /**
111
+ * Get ICE servers configuration for RTCPeerConnection
112
+ *
113
+ * @param includeUnhealthy - Include unhealthy servers (default: false)
114
+ * @returns Array of ICE server configurations
115
+ */
116
+ getICEServers(includeUnhealthy = false) {
117
+ const servers = includeUnhealthy
118
+ ? this.config.servers
119
+ : this.getHealthyServers();
120
+ return servers.map((server) => ({
121
+ urls: server.urls,
122
+ username: server.username,
123
+ credential: server.credential,
124
+ credentialType: server.credentialType,
125
+ }));
126
+ }
127
+ /**
128
+ * Get a specific server's current credentials
129
+ *
130
+ * @param serverUrl - Server URL to get credentials for
131
+ * @returns Server configuration with current credentials or null
132
+ */
133
+ getServerCredentials(serverUrl) {
134
+ const state = this.credentialStates.get(serverUrl);
135
+ return state?.credentials ?? null;
136
+ }
137
+ /**
138
+ * Manually refresh credentials for a server
139
+ *
140
+ * @param serverUrl - Server URL to refresh credentials for
141
+ * @returns Promise resolving to refreshed credentials
142
+ */
143
+ async refreshCredentials(serverUrl) {
144
+ const state = this.credentialStates.get(serverUrl);
145
+ if (!state) {
146
+ throw new Error(`No credential state for server: ${serverUrl}`);
147
+ }
148
+ if (!this.config.credentialConfig) {
149
+ throw new Error('No credential refresh configuration');
150
+ }
151
+ return this.fetchNewCredentials(serverUrl);
152
+ }
153
+ /**
154
+ * Add a new TURN server to the manager
155
+ *
156
+ * @param server - Server configuration to add
157
+ */
158
+ addServer(server) {
159
+ const url = this.getServerUrl(server);
160
+ if (this.serverHealth.has(url)) {
161
+ throw new Error(`Server already exists: ${url}`);
162
+ }
163
+ this.config.servers.push(server);
164
+ this.serverHealth.set(url, {
165
+ server,
166
+ healthy: true,
167
+ latencyMs: Infinity,
168
+ lastCheckAt: 0,
169
+ failureCount: 0,
170
+ });
171
+ if (server.expiresAt) {
172
+ this.credentialStates.set(url, {
173
+ credentials: server,
174
+ fetchedAt: Date.now(),
175
+ refreshing: false,
176
+ });
177
+ this.scheduleCredentialRefresh(server);
178
+ }
179
+ }
180
+ /**
181
+ * Remove a TURN server from the manager
182
+ *
183
+ * @param serverUrl - Server URL to remove
184
+ */
185
+ removeServer(serverUrl) {
186
+ const index = this.config.servers.findIndex((s) => this.getServerUrl(s) === serverUrl);
187
+ if (index !== -1) {
188
+ this.config.servers.splice(index, 1);
189
+ }
190
+ this.serverHealth.delete(serverUrl);
191
+ const state = this.credentialStates.get(serverUrl);
192
+ if (state?.refreshTimer) {
193
+ clearTimeout(state.refreshTimer);
194
+ }
195
+ this.credentialStates.delete(serverUrl);
196
+ }
197
+ /**
198
+ * Get server health status
199
+ *
200
+ * @param serverUrl - Server URL to check
201
+ * @returns Health status or null if not found
202
+ */
203
+ getServerHealth(serverUrl) {
204
+ return this.serverHealth.get(serverUrl) ?? null;
205
+ }
206
+ /**
207
+ * Get all server health statuses
208
+ *
209
+ * @returns Map of server URLs to health statuses
210
+ */
211
+ getAllServerHealth() {
212
+ return new Map(this.serverHealth);
213
+ }
214
+ /**
215
+ * Force health check for all servers
216
+ */
217
+ async checkAllServersHealth() {
218
+ const servers = Array.from(this.serverHealth.keys());
219
+ await Promise.all(servers.map((url) => this.checkServerHealth(url)));
220
+ }
221
+ /**
222
+ * Register event handler
223
+ *
224
+ * @param type - Event type to handle
225
+ * @param handler - Event handler function
226
+ * @returns Unsubscribe function
227
+ */
228
+ on(type, handler) {
229
+ if (!this.eventHandlers.has(type)) {
230
+ this.eventHandlers.set(type, new Set());
231
+ }
232
+ this.eventHandlers.get(type).add(handler);
233
+ return () => this.eventHandlers.get(type)?.delete(handler);
234
+ }
235
+ /**
236
+ * Get current configuration
237
+ */
238
+ getConfig() {
239
+ return { ...this.config };
240
+ }
241
+ /**
242
+ * Destroy the manager and cleanup resources
243
+ */
244
+ destroy() {
245
+ this.isDestroyed = true;
246
+ // Stop health monitoring
247
+ if (this.healthCheckInterval) {
248
+ clearInterval(this.healthCheckInterval);
249
+ this.healthCheckInterval = undefined;
250
+ }
251
+ // Cancel all credential refresh timers
252
+ this.credentialStates.forEach((state) => {
253
+ if (state.refreshTimer) {
254
+ clearTimeout(state.refreshTimer);
255
+ }
256
+ });
257
+ this.credentialStates.clear();
258
+ this.serverHealth.clear();
259
+ this.eventHandlers.clear();
260
+ }
261
+ // ============================================
262
+ // Private Methods
263
+ // ============================================
264
+ getServerUrl(server) {
265
+ return Array.isArray(server.urls) ? server.urls[0] : server.urls;
266
+ }
267
+ getHealthyServers() {
268
+ const healthy = [];
269
+ this.serverHealth.forEach((health) => {
270
+ if (health.healthy) {
271
+ healthy.push(health.server);
272
+ }
273
+ });
274
+ return healthy;
275
+ }
276
+ async testServerLatencies(servers) {
277
+ const results = await Promise.all(servers.map(async (server) => {
278
+ const latencyMs = await this.measureLatency(server);
279
+ return { server, latencyMs };
280
+ }));
281
+ // Update health tracking with new latencies
282
+ for (const result of results) {
283
+ const url = this.getServerUrl(result.server);
284
+ const health = this.serverHealth.get(url);
285
+ if (health) {
286
+ health.latencyMs = result.latencyMs;
287
+ health.lastCheckAt = Date.now();
288
+ if (result.latencyMs < Infinity) {
289
+ health.failureCount = 0;
290
+ health.healthy = true;
291
+ }
292
+ }
293
+ }
294
+ return results;
295
+ }
296
+ async measureLatency(server) {
297
+ const startTime = performance.now();
298
+ try {
299
+ await this.testTurnConnectivity(server);
300
+ return performance.now() - startTime;
301
+ }
302
+ catch {
303
+ return Infinity;
304
+ }
305
+ }
306
+ async testTurnConnectivity(server) {
307
+ return new Promise((resolve, reject) => {
308
+ if (typeof RTCPeerConnection === 'undefined') {
309
+ reject(new Error('RTCPeerConnection not available'));
310
+ return;
311
+ }
312
+ const iceServer = {
313
+ urls: server.urls,
314
+ username: server.username,
315
+ credential: server.credential,
316
+ };
317
+ const pc = new RTCPeerConnection({
318
+ iceServers: [iceServer],
319
+ iceTransportPolicy: 'relay', // Force TURN usage
320
+ });
321
+ let resolved = false;
322
+ const timeout = setTimeout(() => {
323
+ if (!resolved) {
324
+ resolved = true;
325
+ pc.close();
326
+ reject(new Error('TURN connectivity test timeout'));
327
+ }
328
+ }, this.config.latencyTestTimeout);
329
+ pc.onicecandidate = (event) => {
330
+ if (event.candidate && !resolved) {
331
+ const candidate = event.candidate.candidate;
332
+ // Look for relay candidate indicating TURN works
333
+ if (candidate.includes('typ relay')) {
334
+ resolved = true;
335
+ clearTimeout(timeout);
336
+ pc.close();
337
+ resolve();
338
+ }
339
+ }
340
+ else if (event.candidate === null && !resolved) {
341
+ // Gathering complete without relay candidate
342
+ resolved = true;
343
+ clearTimeout(timeout);
344
+ pc.close();
345
+ reject(new Error('No relay candidate from TURN server'));
346
+ }
347
+ };
348
+ pc.onicegatheringstatechange = () => {
349
+ if (pc.iceGatheringState === 'complete' && !resolved) {
350
+ resolved = true;
351
+ clearTimeout(timeout);
352
+ pc.close();
353
+ reject(new Error('ICE gathering complete without relay'));
354
+ }
355
+ };
356
+ // Create data channel to trigger ICE gathering
357
+ pc.createDataChannel('turn-test');
358
+ pc.createOffer()
359
+ .then((offer) => pc.setLocalDescription(offer))
360
+ .catch((error) => {
361
+ if (!resolved) {
362
+ resolved = true;
363
+ clearTimeout(timeout);
364
+ pc.close();
365
+ reject(error);
366
+ }
367
+ });
368
+ });
369
+ }
370
+ async checkServerHealth(serverUrl) {
371
+ const health = this.serverHealth.get(serverUrl);
372
+ if (!health)
373
+ return;
374
+ try {
375
+ const latencyMs = await this.measureLatency(health.server);
376
+ if (latencyMs < Infinity) {
377
+ health.healthy = true;
378
+ health.latencyMs = latencyMs;
379
+ health.failureCount = 0;
380
+ health.lastError = undefined;
381
+ }
382
+ else {
383
+ throw new Error('Latency measurement failed');
384
+ }
385
+ }
386
+ catch (error) {
387
+ health.failureCount++;
388
+ health.lastError = error instanceof Error ? error.message : 'Unknown error';
389
+ // Mark as unhealthy after 3 consecutive failures
390
+ if (health.failureCount >= 3) {
391
+ health.healthy = false;
392
+ }
393
+ }
394
+ health.lastCheckAt = Date.now();
395
+ }
396
+ startHealthMonitoring() {
397
+ if (this.healthCheckInterval)
398
+ return;
399
+ this.healthCheckInterval = setInterval(() => {
400
+ if (!this.isDestroyed) {
401
+ this.checkAllServersHealth();
402
+ }
403
+ }, this.config.healthCheckInterval);
404
+ }
405
+ scheduleCredentialRefresh(server) {
406
+ if (!this.config.credentialConfig || !server.expiresAt)
407
+ return;
408
+ const url = this.getServerUrl(server);
409
+ const state = this.credentialStates.get(url);
410
+ if (!state)
411
+ return;
412
+ // Cancel existing timer
413
+ if (state.refreshTimer) {
414
+ clearTimeout(state.refreshTimer);
415
+ }
416
+ const expiresIn = server.expiresAt - Date.now();
417
+ const refreshIn = Math.max(0, expiresIn - this.config.credentialConfig.refreshBeforeExpiry);
418
+ state.refreshTimer = setTimeout(async () => {
419
+ if (!this.isDestroyed) {
420
+ try {
421
+ await this.fetchNewCredentials(url);
422
+ }
423
+ catch (error) {
424
+ console.error(`Failed to refresh credentials for ${url}:`, error);
425
+ }
426
+ }
427
+ }, refreshIn);
428
+ }
429
+ async fetchNewCredentials(serverUrl) {
430
+ if (!this.config.credentialConfig) {
431
+ throw new Error('No credential refresh configuration');
432
+ }
433
+ const state = this.credentialStates.get(serverUrl);
434
+ if (!state) {
435
+ throw new Error(`No credential state for server: ${serverUrl}`);
436
+ }
437
+ if (state.refreshing) {
438
+ // Wait for ongoing refresh
439
+ return new Promise((resolve, reject) => {
440
+ const checkInterval = setInterval(() => {
441
+ if (!state.refreshing) {
442
+ clearInterval(checkInterval);
443
+ resolve(state.credentials);
444
+ }
445
+ }, 100);
446
+ setTimeout(() => {
447
+ clearInterval(checkInterval);
448
+ reject(new Error('Credential refresh timeout'));
449
+ }, 30000);
450
+ });
451
+ }
452
+ state.refreshing = true;
453
+ let lastError = null;
454
+ for (let attempt = 0; attempt < this.config.credentialConfig.maxRetries; attempt++) {
455
+ try {
456
+ const newCredentials = await this.doCredentialFetch(serverUrl);
457
+ // Update state
458
+ state.credentials = newCredentials;
459
+ state.fetchedAt = Date.now();
460
+ state.refreshing = false;
461
+ // Update server in config
462
+ const index = this.config.servers.findIndex((s) => this.getServerUrl(s) === serverUrl);
463
+ if (index !== -1) {
464
+ this.config.servers[index] = newCredentials;
465
+ }
466
+ // Update health tracking
467
+ const health = this.serverHealth.get(serverUrl);
468
+ if (health) {
469
+ health.server = newCredentials;
470
+ }
471
+ // Schedule next refresh
472
+ this.scheduleCredentialRefresh(newCredentials);
473
+ this.emitEvent(types_1.NATEventType.CredentialsRefreshed, {
474
+ server: serverUrl,
475
+ expiresAt: newCredentials.expiresAt,
476
+ });
477
+ return newCredentials;
478
+ }
479
+ catch (error) {
480
+ lastError = error instanceof Error ? error : new Error('Unknown error');
481
+ if (attempt < this.config.credentialConfig.maxRetries - 1) {
482
+ await this.delay(this.config.credentialConfig.retryDelay);
483
+ }
484
+ }
485
+ }
486
+ state.refreshing = false;
487
+ throw lastError ?? new Error('Credential refresh failed');
488
+ }
489
+ async doCredentialFetch(serverUrl) {
490
+ if (!this.config.credentialConfig) {
491
+ throw new Error('No credential configuration');
492
+ }
493
+ const { refreshUrl, authToken } = this.config.credentialConfig;
494
+ const headers = {
495
+ 'Content-Type': 'application/json',
496
+ };
497
+ if (authToken) {
498
+ headers['Authorization'] = `Bearer ${authToken}`;
499
+ }
500
+ const response = await fetch(refreshUrl, {
501
+ method: 'POST',
502
+ headers,
503
+ body: JSON.stringify({ server: serverUrl }),
504
+ });
505
+ if (!response.ok) {
506
+ throw new Error(`Credential refresh failed: ${response.status}`);
507
+ }
508
+ const data = await response.json();
509
+ // Validate response
510
+ if (!data.urls || !data.username || !data.credential) {
511
+ throw new Error('Invalid credential response format');
512
+ }
513
+ return {
514
+ urls: data.urls,
515
+ username: data.username,
516
+ credential: data.credential,
517
+ credentialType: data.credentialType || 'password',
518
+ expiresAt: data.expiresAt,
519
+ region: data.region,
520
+ priority: data.priority,
521
+ };
522
+ }
523
+ delay(ms) {
524
+ return new Promise((resolve) => setTimeout(resolve, ms));
525
+ }
526
+ emitEvent(type, data) {
527
+ const handlers = this.eventHandlers.get(type);
528
+ if (handlers) {
529
+ const event = {
530
+ type,
531
+ timestamp: Date.now(),
532
+ data,
533
+ };
534
+ handlers.forEach((handler) => {
535
+ try {
536
+ handler(event);
537
+ }
538
+ catch (error) {
539
+ console.error(`TURN event handler error for ${type}:`, error);
540
+ }
541
+ });
542
+ }
543
+ }
544
+ }
545
+ exports.TURNManager = TURNManager;
546
+ exports.default = TURNManager;
547
+ //# sourceMappingURL=TURNManager.js.map