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,743 @@
1
+ "use strict";
2
+ /**
3
+ * BrowserAgent - Browser-Compatible Base Agent for WASM Environments
4
+ *
5
+ * This is the browser-compatible version of BaseAgent that can run in:
6
+ * - Modern browsers (Chrome 87+, Firefox 89+, Safari 15+)
7
+ * - Web Workers
8
+ * - Service Workers
9
+ * - WASM-based environments
10
+ *
11
+ * Key differences from Node.js BaseAgent:
12
+ * - No EventEmitter inheritance (uses custom BrowserEventEmitter)
13
+ * - No Node.js crypto (uses Web Crypto API via shims)
14
+ * - No fs/path dependencies
15
+ * - IndexedDB for storage instead of SQLite
16
+ * - BroadcastChannel for cross-tab coordination
17
+ *
18
+ * Phase 0: @ruvector/edge integration
19
+ * Target bundle size contribution: <100KB
20
+ *
21
+ * @module edge/browser/BrowserAgent
22
+ */
23
+ Object.defineProperty(exports, "__esModule", { value: true });
24
+ exports.BrowserAgentBase = exports.BrowserAgent = exports.BrowserAgentStatus = exports.BrowserAgentType = void 0;
25
+ const browser_agent_types_1 = require("../types/browser-agent.types");
26
+ const shims_1 = require("../wasm/shims");
27
+ const index_1 = require("../index");
28
+ // Re-export for convenience
29
+ var browser_agent_types_2 = require("../types/browser-agent.types");
30
+ Object.defineProperty(exports, "BrowserAgentType", { enumerable: true, get: function () { return browser_agent_types_2.BrowserAgentType; } });
31
+ Object.defineProperty(exports, "BrowserAgentStatus", { enumerable: true, get: function () { return browser_agent_types_2.BrowserAgentStatus; } });
32
+ // ============================================
33
+ // Default Strategy Implementations
34
+ // ============================================
35
+ /**
36
+ * Default lifecycle strategy for browser agents
37
+ */
38
+ class DefaultBrowserLifecycleStrategy {
39
+ constructor() {
40
+ this.status = browser_agent_types_1.BrowserAgentStatus.INITIALIZING;
41
+ this.statusListeners = new Map();
42
+ }
43
+ getStatus() {
44
+ return this.status;
45
+ }
46
+ async transitionTo(status, _reason) {
47
+ this.status = status;
48
+ const listeners = this.statusListeners.get(status);
49
+ if (listeners) {
50
+ listeners.forEach((resolve) => resolve());
51
+ this.statusListeners.delete(status);
52
+ }
53
+ }
54
+ async waitForStatus(status, timeout = 10000) {
55
+ if (this.status === status)
56
+ return;
57
+ return new Promise((resolve, reject) => {
58
+ const timer = setTimeout(() => {
59
+ reject(new Error(`Agent did not reach status '${status}' within ${timeout}ms`));
60
+ }, timeout);
61
+ const listener = () => {
62
+ clearTimeout(timer);
63
+ resolve();
64
+ };
65
+ if (!this.statusListeners.has(status)) {
66
+ this.statusListeners.set(status, []);
67
+ }
68
+ this.statusListeners.get(status).push(listener);
69
+ });
70
+ }
71
+ async waitForReady(timeout = 10000) {
72
+ const status = this.getStatus();
73
+ if (status === browser_agent_types_1.BrowserAgentStatus.IDLE || status === browser_agent_types_1.BrowserAgentStatus.ACTIVE) {
74
+ return;
75
+ }
76
+ return this.waitForStatus(browser_agent_types_1.BrowserAgentStatus.IDLE, timeout);
77
+ }
78
+ }
79
+ /**
80
+ * Default memory strategy for browser agents
81
+ */
82
+ class DefaultBrowserMemoryStrategy {
83
+ constructor(memoryStore, agentId) {
84
+ this.memoryStore = memoryStore;
85
+ this.agentId = agentId;
86
+ }
87
+ async store(key, value, options) {
88
+ const fullKey = `aqe/${this.agentId.type}/${key}`;
89
+ await this.memoryStore.store(fullKey, value, options?.ttl);
90
+ }
91
+ async retrieve(key) {
92
+ const fullKey = `aqe/${this.agentId.type}/${key}`;
93
+ return this.memoryStore.retrieve(fullKey);
94
+ }
95
+ async storeShared(agentType, key, value, options) {
96
+ const fullKey = `aqe/shared/${agentType}/${key}`;
97
+ await this.memoryStore.store(fullKey, value, options?.ttl);
98
+ }
99
+ async retrieveShared(agentType, key) {
100
+ const fullKey = `aqe/shared/${agentType}/${key}`;
101
+ return this.memoryStore.retrieve(fullKey);
102
+ }
103
+ }
104
+ /**
105
+ * Default coordination strategy for browser agents
106
+ */
107
+ class DefaultBrowserCoordinationStrategy {
108
+ constructor(eventBus, agentId) {
109
+ this.eventBus = eventBus;
110
+ this.agentId = agentId;
111
+ this.crypto = (0, shims_1.createBrowserCrypto)();
112
+ // Initialize BroadcastChannel for cross-tab coordination
113
+ if (typeof BroadcastChannel !== 'undefined') {
114
+ try {
115
+ this.broadcastChannel = new BroadcastChannel('agentic-qe-coordination');
116
+ this.broadcastChannel.onmessage = (event) => {
117
+ const message = event.data;
118
+ if (message.target?.id !== this.agentId.id && message.source?.id !== this.agentId.id) {
119
+ this.eventBus.emit(message.type, message);
120
+ }
121
+ };
122
+ }
123
+ catch {
124
+ // BroadcastChannel not available
125
+ }
126
+ }
127
+ }
128
+ emitEvent(type, data) {
129
+ const event = {
130
+ id: (0, browser_agent_types_1.generateBrowserEventId)(this.crypto),
131
+ type,
132
+ source: this.agentId,
133
+ data,
134
+ timestamp: Date.now(),
135
+ priority: 'medium',
136
+ scope: 'global',
137
+ };
138
+ this.eventBus.emit(type, event);
139
+ this.broadcastChannel?.postMessage(event);
140
+ }
141
+ registerHandler(type, handler) {
142
+ this.eventBus.on(type, handler);
143
+ }
144
+ unregisterHandler(type, handler) {
145
+ this.eventBus.off(type, handler);
146
+ }
147
+ async broadcast(message) {
148
+ this.eventBus.emit('agent.message', message);
149
+ this.broadcastChannel?.postMessage(message);
150
+ }
151
+ destroy() {
152
+ this.broadcastChannel?.close();
153
+ }
154
+ }
155
+ // ============================================
156
+ // Simple BrowserAgent (Legacy Compatibility)
157
+ // ============================================
158
+ /**
159
+ * Simple browser agent for basic WASM operations
160
+ * Use BrowserAgentBase for full BaseAgent compatibility
161
+ */
162
+ class BrowserAgent {
163
+ constructor(config) {
164
+ this.config = {
165
+ maxMemoryMB: 50,
166
+ debug: false,
167
+ ...config
168
+ };
169
+ this.eventHandlers = new Set();
170
+ this.memory = config.memory ?? null;
171
+ this.state = {
172
+ status: 'idle',
173
+ lastActivity: Date.now(),
174
+ tasksCompleted: 0,
175
+ memoryUsage: {
176
+ usedBytes: 0,
177
+ maxBytes: (this.config.maxMemoryMB ?? 50) * 1024 * 1024,
178
+ vectorCount: 0,
179
+ indexSizeBytes: 0
180
+ },
181
+ capabilities: (0, index_1.getEdgeCapabilities)()
182
+ };
183
+ }
184
+ get id() {
185
+ return this.config.id;
186
+ }
187
+ get type() {
188
+ return this.config.type;
189
+ }
190
+ getState() {
191
+ return { ...this.state };
192
+ }
193
+ getCapabilities() {
194
+ return this.state.capabilities;
195
+ }
196
+ async start() {
197
+ if (this.state.status === 'running') {
198
+ this.log('Agent already running');
199
+ return;
200
+ }
201
+ this.log('Starting agent...');
202
+ if (!this.state.capabilities.hasWASM) {
203
+ throw new Error('WebAssembly not supported in this environment');
204
+ }
205
+ if (this.memory) {
206
+ await this.memory.initialize();
207
+ this.updateMemoryUsage();
208
+ }
209
+ this.state.status = 'running';
210
+ this.state.lastActivity = Date.now();
211
+ this.emit({ type: 'started', agentId: this.id });
212
+ this.log('Agent started successfully');
213
+ }
214
+ async stop() {
215
+ if (this.state.status !== 'running') {
216
+ this.log('Agent not running');
217
+ return;
218
+ }
219
+ this.log('Stopping agent...');
220
+ if (this.memory) {
221
+ await this.memory.close();
222
+ }
223
+ this.state.status = 'idle';
224
+ this.state.lastActivity = Date.now();
225
+ this.emit({ type: 'stopped', agentId: this.id });
226
+ this.log('Agent stopped');
227
+ }
228
+ async storeVector(key, vector, metadata) {
229
+ if (!this.memory) {
230
+ throw new Error('No memory adapter configured');
231
+ }
232
+ if (this.state.status !== 'running') {
233
+ throw new Error('Agent not running');
234
+ }
235
+ await this.memory.store(key, vector, metadata);
236
+ this.updateMemoryUsage();
237
+ this.state.lastActivity = Date.now();
238
+ }
239
+ async searchVectors(query, k = 10) {
240
+ if (!this.memory) {
241
+ throw new Error('No memory adapter configured');
242
+ }
243
+ if (this.state.status !== 'running') {
244
+ throw new Error('Agent not running');
245
+ }
246
+ const results = await this.memory.search(query, k);
247
+ this.state.lastActivity = Date.now();
248
+ return results;
249
+ }
250
+ on(handler) {
251
+ this.eventHandlers.add(handler);
252
+ return () => this.eventHandlers.delete(handler);
253
+ }
254
+ recordTaskCompletion(taskId, duration) {
255
+ this.state.tasksCompleted++;
256
+ this.state.lastActivity = Date.now();
257
+ this.emit({ type: 'task_completed', agentId: this.id, taskId, duration });
258
+ }
259
+ updateMemoryUsage() {
260
+ if (this.memory) {
261
+ this.state.memoryUsage = this.memory.getMemoryUsage();
262
+ this.emit({ type: 'memory_updated', agentId: this.id, usage: this.state.memoryUsage });
263
+ }
264
+ }
265
+ emit(event) {
266
+ this.eventHandlers.forEach((handler) => {
267
+ try {
268
+ handler(event);
269
+ }
270
+ catch (error) {
271
+ this.log(`Event handler error: ${error}`);
272
+ }
273
+ });
274
+ }
275
+ log(message) {
276
+ if (this.config.debug) {
277
+ console.log(`[BrowserAgent:${this.id}] ${message}`);
278
+ }
279
+ }
280
+ }
281
+ exports.BrowserAgent = BrowserAgent;
282
+ // ============================================
283
+ // Abstract BrowserAgentBase (Full BaseAgent Compatibility)
284
+ // ============================================
285
+ /**
286
+ * Abstract base class for browser-compatible QE agents
287
+ * Mirrors the interface of Node.js BaseAgent
288
+ *
289
+ * @example
290
+ * ```typescript
291
+ * class BrowserTestGeneratorAgent extends BrowserAgentBase {
292
+ * protected async initializeComponents(): Promise<void> {
293
+ * // Initialize test generation components
294
+ * }
295
+ *
296
+ * protected async performTask(task: BrowserTask): Promise<any> {
297
+ * // Generate tests in browser
298
+ * }
299
+ *
300
+ * protected async loadKnowledge(): Promise<void> {
301
+ * // Load cached patterns from IndexedDB
302
+ * }
303
+ *
304
+ * protected async cleanup(): Promise<void> {
305
+ * // Cleanup resources
306
+ * }
307
+ * }
308
+ * ```
309
+ */
310
+ class BrowserAgentBase {
311
+ constructor(config) {
312
+ this.performanceMetrics = {
313
+ tasksCompleted: 0,
314
+ averageExecutionTime: 0,
315
+ errorCount: 0,
316
+ lastActivity: Date.now(),
317
+ };
318
+ this.statusChangeCallbacks = [];
319
+ this.crypto = (0, shims_1.createBrowserCrypto)();
320
+ this.logger = (0, shims_1.createBrowserLogger)();
321
+ this.agentId = config.id
322
+ ? { id: config.id, type: config.type, created: Date.now() }
323
+ : (0, browser_agent_types_1.generateBrowserAgentId)(config.type, this.crypto);
324
+ this.capabilities = new Map((config.capabilities || []).map((cap) => [cap.name, cap]));
325
+ this.context = config.context;
326
+ this.memoryStore = config.memoryStore;
327
+ this.eventBus = config.eventBus || (0, shims_1.createBrowserEventEmitter)();
328
+ this.llmConfig = config.llm;
329
+ this.strategies = {
330
+ lifecycle: config.lifecycleStrategy ?? new DefaultBrowserLifecycleStrategy(),
331
+ memory: config.memoryStrategy ?? new DefaultBrowserMemoryStrategy(this.memoryStore, this.agentId),
332
+ learning: config.learningStrategy,
333
+ coordination: config.coordinationStrategy ?? new DefaultBrowserCoordinationStrategy(this.eventBus, this.agentId),
334
+ };
335
+ this.setupEventHandlers();
336
+ }
337
+ // ============================================
338
+ // Public Interface
339
+ // ============================================
340
+ async initialize() {
341
+ if (this.initializationPromise) {
342
+ return this.initializationPromise;
343
+ }
344
+ const currentStatus = this.strategies.lifecycle.getStatus();
345
+ if (currentStatus === browser_agent_types_1.BrowserAgentStatus.ACTIVE || currentStatus === browser_agent_types_1.BrowserAgentStatus.IDLE) {
346
+ return;
347
+ }
348
+ this.initializationPromise = this.doInitialize();
349
+ try {
350
+ await this.initializationPromise;
351
+ }
352
+ finally {
353
+ this.initializationPromise = undefined;
354
+ }
355
+ }
356
+ async doInitialize() {
357
+ try {
358
+ await this.loadKnowledge();
359
+ const savedState = await this.memoryStore.retrieve(`state:${this.agentId.id}`);
360
+ if (savedState && typeof savedState === 'object') {
361
+ const state = savedState;
362
+ if (state.performanceMetrics) {
363
+ this.performanceMetrics = { ...this.performanceMetrics, ...state.performanceMetrics };
364
+ }
365
+ }
366
+ await this.initializeLLMProvider();
367
+ await this.initializeComponents();
368
+ await this.strategies.lifecycle.transitionTo(browser_agent_types_1.BrowserAgentStatus.IDLE);
369
+ this.emitStatusChange(browser_agent_types_1.BrowserAgentStatus.IDLE);
370
+ this.strategies.coordination.emitEvent('agent.initialized', { agentId: this.agentId });
371
+ this.logger.info(`[${this.agentId.id}] Agent initialized successfully`);
372
+ }
373
+ catch (error) {
374
+ await this.strategies.lifecycle.transitionTo(browser_agent_types_1.BrowserAgentStatus.ERROR, `Initialization failed: ${error}`);
375
+ this.emitStatusChange(browser_agent_types_1.BrowserAgentStatus.ERROR);
376
+ throw new browser_agent_types_1.BrowserAgentError(`Agent initialization failed: ${error}`, 'INITIALIZATION_FAILED', true, error instanceof Error ? error : undefined);
377
+ }
378
+ }
379
+ async executeTask(assignment) {
380
+ const startTime = (0, shims_1.hrtime)();
381
+ try {
382
+ this.validateTaskAssignment(assignment);
383
+ this.currentTask = assignment;
384
+ await this.strategies.lifecycle.transitionTo(browser_agent_types_1.BrowserAgentStatus.ACTIVE);
385
+ this.emitStatusChange(browser_agent_types_1.BrowserAgentStatus.ACTIVE);
386
+ const preTaskData = { assignment };
387
+ await this.onPreTask(preTaskData);
388
+ const result = await this.performTask(assignment.task);
389
+ const duration = (0, shims_1.elapsed)(startTime);
390
+ const postTaskData = { assignment, result, duration };
391
+ await this.onPostTask(postTaskData);
392
+ this.updatePerformanceMetrics(startTime, true);
393
+ await this.memoryStore.store(`task-result:${assignment.id}`, result);
394
+ this.currentTask = undefined;
395
+ await this.strategies.lifecycle.transitionTo(browser_agent_types_1.BrowserAgentStatus.IDLE);
396
+ this.emitStatusChange(browser_agent_types_1.BrowserAgentStatus.IDLE);
397
+ return {
398
+ success: true,
399
+ data: result,
400
+ duration: (0, shims_1.elapsed)(startTime),
401
+ metadata: { taskId: assignment.id },
402
+ };
403
+ }
404
+ catch (error) {
405
+ this.updatePerformanceMetrics(startTime, false);
406
+ this.currentTask = undefined;
407
+ const taskErrorData = {
408
+ assignment,
409
+ error: error instanceof Error ? error.message : String(error),
410
+ stack: error instanceof Error ? error.stack : undefined,
411
+ };
412
+ await this.onTaskError(taskErrorData);
413
+ await this.strategies.lifecycle.transitionTo(browser_agent_types_1.BrowserAgentStatus.ERROR, `Task failed: ${error}`);
414
+ this.emitStatusChange(browser_agent_types_1.BrowserAgentStatus.ERROR);
415
+ throw new browser_agent_types_1.BrowserAgentError(`Task execution failed: ${error}`, 'TASK_FAILED', true, error instanceof Error ? error : undefined);
416
+ }
417
+ }
418
+ async terminate() {
419
+ try {
420
+ await this.strategies.lifecycle.transitionTo(browser_agent_types_1.BrowserAgentStatus.STOPPING);
421
+ this.emitStatusChange(browser_agent_types_1.BrowserAgentStatus.STOPPING);
422
+ await this.saveState();
423
+ await this.cleanup();
424
+ await this.cleanupLLM();
425
+ if (this.strategies.coordination instanceof DefaultBrowserCoordinationStrategy) {
426
+ this.strategies.coordination.destroy();
427
+ }
428
+ await this.strategies.lifecycle.transitionTo(browser_agent_types_1.BrowserAgentStatus.TERMINATED);
429
+ this.emitStatusChange(browser_agent_types_1.BrowserAgentStatus.TERMINATED);
430
+ this.strategies.coordination.emitEvent('agent.terminated', { agentId: this.agentId });
431
+ this.eventBus.removeAllListeners();
432
+ this.statusChangeCallbacks = [];
433
+ this.logger.info(`[${this.agentId.id}] Agent terminated successfully`);
434
+ }
435
+ catch (error) {
436
+ await this.strategies.lifecycle.transitionTo(browser_agent_types_1.BrowserAgentStatus.ERROR, `Termination failed: ${error}`);
437
+ throw error;
438
+ }
439
+ }
440
+ // ============================================
441
+ // Getters
442
+ // ============================================
443
+ getAgentId() {
444
+ return this.agentId;
445
+ }
446
+ getStatus() {
447
+ return {
448
+ agentId: this.agentId,
449
+ status: this.strategies.lifecycle.getStatus(),
450
+ currentTask: this.currentTask?.id,
451
+ capabilities: Array.from(this.capabilities.keys()),
452
+ performanceMetrics: { ...this.performanceMetrics },
453
+ };
454
+ }
455
+ hasCapability(name) {
456
+ return this.capabilities.has(name);
457
+ }
458
+ getCapability(name) {
459
+ return this.capabilities.get(name);
460
+ }
461
+ getCapabilities() {
462
+ return Array.from(this.capabilities.values());
463
+ }
464
+ getStrategies() {
465
+ return this.strategies;
466
+ }
467
+ // ============================================
468
+ // Event-Driven Coordination
469
+ // ============================================
470
+ async waitForStatus(status, timeout = 10000) {
471
+ if (this.strategies.lifecycle.waitForStatus) {
472
+ return this.strategies.lifecycle.waitForStatus(status, timeout);
473
+ }
474
+ return new Promise((resolve, reject) => {
475
+ if (this.strategies.lifecycle.getStatus() === status) {
476
+ return resolve();
477
+ }
478
+ const timer = setTimeout(() => {
479
+ reject(new Error(`Agent did not reach status '${status}' within ${timeout}ms`));
480
+ }, timeout);
481
+ const callback = (newStatus) => {
482
+ if (newStatus === status) {
483
+ clearTimeout(timer);
484
+ this.removeStatusChangeCallback(callback);
485
+ resolve();
486
+ }
487
+ };
488
+ this.addStatusChangeCallback(callback);
489
+ });
490
+ }
491
+ async waitForReady(timeout = 10000) {
492
+ if (this.strategies.lifecycle.waitForReady) {
493
+ return this.strategies.lifecycle.waitForReady(timeout);
494
+ }
495
+ const status = this.strategies.lifecycle.getStatus();
496
+ if (status === browser_agent_types_1.BrowserAgentStatus.IDLE || status === browser_agent_types_1.BrowserAgentStatus.ACTIVE) {
497
+ return;
498
+ }
499
+ return this.waitForStatus(browser_agent_types_1.BrowserAgentStatus.IDLE, timeout);
500
+ }
501
+ addStatusChangeCallback(callback) {
502
+ this.statusChangeCallbacks.push(callback);
503
+ }
504
+ removeStatusChangeCallback(callback) {
505
+ const index = this.statusChangeCallbacks.indexOf(callback);
506
+ if (index !== -1) {
507
+ this.statusChangeCallbacks.splice(index, 1);
508
+ }
509
+ }
510
+ // ============================================
511
+ // LLM Integration
512
+ // ============================================
513
+ hasLLM() {
514
+ return this.llmProvider !== undefined;
515
+ }
516
+ getLLMProvider() {
517
+ return this.llmProvider;
518
+ }
519
+ async llmComplete(prompt, options) {
520
+ if (!this.llmProvider) {
521
+ throw new browser_agent_types_1.BrowserAgentError('LLM not available - initialize agent first', 'LLM_ERROR', false);
522
+ }
523
+ const completionOptions = {
524
+ model: options?.model || this.llmConfig?.defaultModel || 'default',
525
+ messages: [{ role: 'user', content: prompt }],
526
+ maxTokens: options?.maxTokens,
527
+ temperature: options?.temperature,
528
+ metadata: {
529
+ ...options?.metadata,
530
+ agentId: this.agentId.id,
531
+ agentType: this.agentId.type,
532
+ },
533
+ };
534
+ const response = await this.llmProvider.complete(completionOptions);
535
+ return response.content
536
+ .filter((block) => block.type === 'text')
537
+ .map((block) => block.text)
538
+ .join('\n');
539
+ }
540
+ async llmEmbed(text) {
541
+ if (!this.llmProvider?.embed) {
542
+ throw new browser_agent_types_1.BrowserAgentError('Embeddings not supported by LLM provider', 'LLM_ERROR', false);
543
+ }
544
+ const response = await this.llmProvider.embed({ text });
545
+ return response.embedding || [];
546
+ }
547
+ // ============================================
548
+ // FleetManager Compatibility
549
+ // ============================================
550
+ async start() {
551
+ const status = this.strategies.lifecycle.getStatus();
552
+ if (status === browser_agent_types_1.BrowserAgentStatus.ACTIVE || status === browser_agent_types_1.BrowserAgentStatus.IDLE) {
553
+ return;
554
+ }
555
+ await this.initialize();
556
+ }
557
+ async stop() {
558
+ await this.terminate();
559
+ }
560
+ async assignTask(task) {
561
+ const assignment = {
562
+ id: (0, browser_agent_types_1.generateBrowserTaskId)(this.crypto),
563
+ task,
564
+ agentId: this.agentId.id,
565
+ assignedAt: Date.now(),
566
+ status: 'assigned',
567
+ };
568
+ await this.executeTask(assignment);
569
+ }
570
+ // ============================================
571
+ // Protected Methods
572
+ // ============================================
573
+ registerCapability(capability) {
574
+ this.capabilities.set(capability.name, capability);
575
+ this.strategies.coordination.emitEvent('capability.registered', {
576
+ agentId: this.agentId,
577
+ capability: capability.name,
578
+ });
579
+ }
580
+ registerCapabilities(capabilities) {
581
+ capabilities.forEach((cap) => this.registerCapability(cap));
582
+ }
583
+ emitEvent(type, data) {
584
+ this.strategies.coordination.emitEvent(type, data);
585
+ }
586
+ emitStatusChange(status) {
587
+ this.statusChangeCallbacks.forEach((callback) => {
588
+ try {
589
+ callback(status);
590
+ }
591
+ catch (error) {
592
+ this.logger.error(`Status change callback error:`, error);
593
+ }
594
+ });
595
+ this.strategies.coordination.emitEvent('agent.status-changed', {
596
+ agentId: this.agentId,
597
+ status,
598
+ timestamp: Date.now(),
599
+ });
600
+ }
601
+ async broadcastMessage(type, payload) {
602
+ const message = {
603
+ id: (0, browser_agent_types_1.generateBrowserMessageId)(this.crypto),
604
+ from: this.agentId,
605
+ to: { id: 'broadcast', type: browser_agent_types_1.BrowserAgentType.TEST_GENERATOR, created: Date.now() },
606
+ type: type,
607
+ payload,
608
+ timestamp: Date.now(),
609
+ priority: 'medium',
610
+ };
611
+ await this.strategies.coordination.broadcast(message);
612
+ }
613
+ async storeMemory(key, value, ttl) {
614
+ await this.strategies.memory.store(key, value, { ttl });
615
+ }
616
+ async retrieveMemory(key) {
617
+ return this.strategies.memory.retrieve(key);
618
+ }
619
+ async storeSharedMemory(key, value, ttl) {
620
+ await this.strategies.memory.storeShared(this.agentId.type, key, value, { ttl });
621
+ }
622
+ async retrieveSharedMemory(agentType, key) {
623
+ return this.strategies.memory.retrieveShared(agentType, key);
624
+ }
625
+ // ============================================
626
+ // Lifecycle Hooks
627
+ // ============================================
628
+ async onPreTask(data) {
629
+ this.taskStartTime = (0, shims_1.hrtime)();
630
+ if (this.strategies.lifecycle.onPreTask) {
631
+ await this.strategies.lifecycle.onPreTask(data);
632
+ }
633
+ this.emitEvent('hook.pre-task', { agentId: this.agentId, taskId: data.assignment.id });
634
+ }
635
+ async onPostTask(data) {
636
+ if (this.strategies.lifecycle.onPostTask) {
637
+ await this.strategies.lifecycle.onPostTask(data);
638
+ }
639
+ if (this.strategies.learning?.recordExecution) {
640
+ await this.strategies.learning.recordExecution({
641
+ task: data.assignment.task,
642
+ result: data.result,
643
+ success: true,
644
+ duration: data.duration,
645
+ metadata: { taskId: data.assignment.id },
646
+ });
647
+ }
648
+ this.emitEvent('hook.post-task', { agentId: this.agentId, taskId: data.assignment.id, duration: data.duration });
649
+ }
650
+ async onTaskError(data) {
651
+ const executionTime = this.taskStartTime ? (0, shims_1.elapsed)(this.taskStartTime) : 0;
652
+ await this.storeMemory(`error:${data.assignment.id}`, {
653
+ error: data.error,
654
+ stack: data.stack,
655
+ assignment: { id: data.assignment.id, taskType: data.assignment.task?.type ?? 'unknown' },
656
+ timestamp: Date.now(),
657
+ agentId: this.agentId.id,
658
+ });
659
+ if (this.strategies.lifecycle.onTaskError) {
660
+ await this.strategies.lifecycle.onTaskError(data);
661
+ }
662
+ if (this.strategies.learning?.recordExecution) {
663
+ await this.strategies.learning.recordExecution({
664
+ task: data.assignment.task,
665
+ error: data.error,
666
+ success: false,
667
+ duration: executionTime,
668
+ metadata: { taskId: data.assignment.id },
669
+ });
670
+ }
671
+ this.emitEvent('hook.task-error', { agentId: this.agentId, error: data.error });
672
+ }
673
+ // ============================================
674
+ // Private Helpers
675
+ // ============================================
676
+ async initializeLLMProvider() {
677
+ if (!this.llmConfig?.enabled || !this.llmConfig?.provider) {
678
+ return;
679
+ }
680
+ try {
681
+ this.llmProvider = this.llmConfig.provider;
682
+ await this.llmProvider.initialize();
683
+ this.logger.info(`[${this.agentId.id}] LLM provider initialized`);
684
+ }
685
+ catch (error) {
686
+ this.logger.warn(`[${this.agentId.id}] LLM initialization failed:`, error);
687
+ }
688
+ }
689
+ async cleanupLLM() {
690
+ if (this.llmProvider) {
691
+ try {
692
+ await this.llmProvider.shutdown();
693
+ this.logger.info(`[${this.agentId.id}] LLM provider shutdown complete`);
694
+ }
695
+ catch (error) {
696
+ this.logger.warn(`[${this.agentId.id}] LLM shutdown error:`, error);
697
+ }
698
+ }
699
+ }
700
+ setupEventHandlers() {
701
+ this.strategies.coordination.registerHandler('fleet.shutdown', async () => {
702
+ await this.terminate();
703
+ });
704
+ this.strategies.coordination.registerHandler('agent.ping', (event) => {
705
+ if (event.target?.id === this.agentId.id) {
706
+ this.emitEvent('agent.pong', { agentId: this.agentId });
707
+ }
708
+ });
709
+ }
710
+ validateTaskAssignment(assignment) {
711
+ if (!assignment?.task) {
712
+ throw new browser_agent_types_1.BrowserAgentError('Invalid task assignment', 'VALIDATION_ERROR', false);
713
+ }
714
+ const requiredCapabilities = assignment.task.requirements?.capabilities || [];
715
+ for (const cap of requiredCapabilities) {
716
+ if (!this.hasCapability(cap)) {
717
+ throw new browser_agent_types_1.BrowserAgentError(`Missing required capability: ${cap}`, 'VALIDATION_ERROR', false);
718
+ }
719
+ }
720
+ }
721
+ updatePerformanceMetrics(startTime, success) {
722
+ const duration = (0, shims_1.elapsed)(startTime);
723
+ if (success) {
724
+ this.performanceMetrics.tasksCompleted++;
725
+ this.performanceMetrics.averageExecutionTime =
726
+ (this.performanceMetrics.averageExecutionTime * (this.performanceMetrics.tasksCompleted - 1) + duration) /
727
+ this.performanceMetrics.tasksCompleted;
728
+ }
729
+ else {
730
+ this.performanceMetrics.errorCount++;
731
+ }
732
+ this.performanceMetrics.lastActivity = Date.now();
733
+ }
734
+ async saveState() {
735
+ await this.memoryStore.store(`state:${this.agentId.id}`, {
736
+ performanceMetrics: this.performanceMetrics,
737
+ timestamp: Date.now(),
738
+ });
739
+ }
740
+ }
741
+ exports.BrowserAgentBase = BrowserAgentBase;
742
+ exports.default = BrowserAgent;
743
+ //# sourceMappingURL=BrowserAgent.js.map